Gönderen Konu: C++ STD VECTOR E 2 Lİ ELEMAN ATAMA  (Okunma sayısı 1502 defa)

C++ STD VECTOR E 2 Lİ ELEMAN ATAMA

« : 09.02.2015 18:26:40 »
Hızlı düğmeleri aç

yeter

İleti: 2

Çevrimdışı
  • *
  • Newbie
    • Profili Görüntüle
Arkadaşlar Merhaba forumda yeniyim ve bir konuyu size danışmak istiyorum ben işin içinden çıkamadım araştırdım bulamadım
Sorun şu ben x ve y olmak üzere koordinatları bir vectöre kaydetmek istiyorum fakat iki boyutlu olduğu için yapı oluşturmam gerekiyormuş onu hallettim ve şimdi de yakın koordinatları silmek istiyorum Mesela 210 211;209 211 ;210 212 gibi loordinatlar varsa bunlardan bir kalsa yeter  ama nasıl sileceğimi bilmiyorum Kod burada yardım ederseniz , düzeltirseniz sevinirim
Kod: [Seç]
#include <iostream>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/contrib/contrib.hpp"
#include <vector>
#include <stdio.h>
#include <algorithm>
using namespace std;
using namespace cv;
struct Koordinat {
int x;
int y;
};
int main()
{
int const r1 =100,r2=75,r3=50;
    std::vector<Koordinat> cember1, cember2, cember3;
std::vector<int>dizi;
Mat image = imread("C:\\OpenCV2.4.6\\56.png");
 //circle( image, Point( 385, 385 ), 100.0, Scalar( 0, 0, 255 ), 1, 8 );
      for(int i = 0; i < image.rows; ++i) {
        for(int j = 0; j < image.cols; ++j) {
            int b=int(image.at<cv::Vec3b>(i,j)[0]);
        int g=int(image.at<cv::Vec3b>(i,j)[1]);
        int r=int(image.at<cv::Vec3b>(i,j)[2]);
         int x=385,y=385;
       
    float cember_denklemi1,cember_denklemi2,cember_denklemi3;
    cember_denklemi1= sqrt((i-x)*(i-x)+(j-y)*(j-y)-(r1*r1));
    cember_denklemi2= sqrt((i-x)*(i-x)+(j-y)*(j-y)-(r2*r2));
     cember_denklemi3= sqrt((i-x)*(i-x)+(j-y)*(j-y)-(r3*r3));
      if(cember_denklemi1<=2.0&&b+g+r>=0)
       cout<<"KIRMIZI"<<i<<"  "<<j<<endl;
       
        cember1.push_back({i, j});
       
     if(cember_denklemi2<=2.0&&b+g+r>=0)
     cout<<"YESİL"<<i<<"  "<<j<<endl;
     cember2.push_back({i, j});
    if( cember_denklemi3<=2.0&&b+g+r>=0)
     cout<<"MAVİ"<<i<<"   "<<j<<endl;
   
       cember3.push_back({i, j});
    }
}
for(int i=0;i<cember1.size();i++)
{
for(int j=i+1;j<cember1.size();j++)
{
if((cember1.at(i).x-cember1.at(j).x)*(cember1.at(i).x-cember1.at(j).x)+(cember1.at(i).y-cember1.at(j).y)*(cember1.at(i).y-cember1.at(j).y)<3)
dizi.push_back(j);
}

}
for(int j=0;j<dizi.size();j++)
{
cember1.erase(cember1.begin()+dizi.at(j));
}
        dizi.clear();

}