# Homework Help: Which points on the same curve?

Tags:
1. Mar 10, 2015

### sanane

Hi everyone
ın fact at the beginning ı want to select three points every curve Idid it But now I shold find which points ont the same time AND THEN I shold save its How can do it

My code is here
Code (C):

#include <iostream>
#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 = 50, r2 = 73, r3 = 15;
std::vector<Koordinat> cember1, cember2, cember3;

int ikiBoyutKarsilastirDizi[100][2] = {};
int atlananKoordinatlar[100][2] = {};
cv::Vec3b pixelColor(255, 255, 0);

//circle( image, Point( 385, 385 ), 100.0, Scalar( 0, 0, 255 ), 1, 8 );
//circle(image, Point(385, 385), 100, Scalar(255, 0, 0), 1, 8, 0);

Vec3b color2 = image.at<Vec3b>(Point(394, 378));

for (int i = 0; i < image.cols; ++i) {  // row la sütunun yeri  yanlış olduğu için hesaplamalar yanlıs çıkıyor...
for (int j = 0; j < image.rows; ++j) {

Vec3b intensity = image.at<Vec3b>(j, i);
uchar blue = intensity.val[0];
uchar green = intensity.val[1];
uchar red = intensity.val[2];
//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;

int cember_denklemi1;
int cember_denklemi2;
int cember_denklemi3;
//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));

cember_denklemi1 =  (i - x)*(i - x) + (j - y)*(j - y) - (r1*r1);
cember_denklemi2 = (i - x)*(i - x) + (j - y)*(j - y) - (r2*r2);
cember_denklemi3 = (i - x)*(i - x) + (j - y)*(j - y) - (r3*r3);
int sayac = 0;

if (cember_denklemi1 >=0 && cember_denklemi1 <=300&&(blue&&red&&green>0))
{

image.at<Vec3b>(Point(i, j)) = pixelColor;

//Vec3b color = image.at<Vec3b>(Point(i, j));
cout << "gelen koordinat : " << i << " " << j << endl;
if (ikiBoyutKarsilastirDizi[0][0] == 0)
//eğer dizinin içi boş ise vektörü ata. i ve j yi göster.
{
ikiBoyutKarsilastirDizi[0][0] = i;
ikiBoyutKarsilastirDizi[0][1] = j;
cout << "KIRMIZI" << i << " " << j << endl;

//      image.at<Vec3b>(Point(i, j)) = color2;
}
else
{
for (int z = 0; z<100; z++)//dizinin büyüklüğü 100 olduğu için.
{
if (ikiBoyutKarsilastirDizi[z][0] != 0 && ikiBoyutKarsilastirDizi[z][1] != 0)
{

/* 287 365 yüzünden and or oldu */if (abs(ikiBoyutKarsilastirDizi[z][0] - i) >= 5 || abs(ikiBoyutKarsilastirDizi[z][1] - j) >= 5) // eğer daha önce diziye atanmış vektörün x ve y'si yeni eklenmeye çalışan vektörün x ve y' sinden 5 fazla yada eksik mi kontrolü. abs'ın amacı -3 yada -2 çıkma durumunda olayı kurtarmak.
{

sayac = z;

}
else
{

sayac = -1;
break;
}
}
}

if (sayac != -1)
{

ikiBoyutKarsilastirDizi[sayac + 1][0] = i;
ikiBoyutKarsilastirDizi[sayac + 1][1] = j;
cout << "KIRMIZI" << i << " " << j << endl;

}
else //atlanan koordinat buraya düşecek.
{
cout << "atlanan koordinat: " <<i << " " << j << endl;

}

}
}
int sayac2=0;
if (cember_denklemi2 >=0 && cember_denklemi2 <=300&&(blue&&red&&green>0))
{

image.at<Vec3b>(Point(i, j)) = pixelColor;

//Vec3b color = image.at<Vec3b>(Point(i, j));
cout << "gelen koordinat1 : " << i << " " << j << endl;
if (ikiBoyutKarsilastirDizi[0][0] == 0)
//eğer dizinin içi boş ise vektörü ata. i ve j yi göster.
{
ikiBoyutKarsilastirDizi[0][0] = i;
ikiBoyutKarsilastirDizi[0][1] = j;
cout << "BUYUK" << i << " " << j << endl;

//      image.at<Vec3b>(Point(i, j)) = color2;
}
else
{
for (int z = 0; z<100; z++)//dizinin büyüklüğü 100 olduğu için.
{//0 0 geldiğinde 5 ten büyük gözüktüğü için dahil ediyor 0'lar için özel bir şey lazım.
if (ikiBoyutKarsilastirDizi[z][0] != 0 && ikiBoyutKarsilastirDizi[z][1] != 0) // birinci yada ikinci değer 0 değilse aramaya devam et.
{

/* 287 365 yüzünden and or oldu */if (abs(ikiBoyutKarsilastirDizi[z][0] - i) >= 5 || abs(ikiBoyutKarsilastirDizi[z][1] - j) >= 5)
{

sayac2 = z;

}
else
{

sayac2 = -1;
break;
}
}
}
//bütün değerlerin kontrolü yapıldıktan sonra eleman eklenmeli ve gösterilmeli.
if (sayac2 != -1)
{

ikiBoyutKarsilastirDizi[sayac2 + 1][0] = i;
ikiBoyutKarsilastirDizi[sayac2 + 1][1] = j;
cout << "BUYUK" << i << " " << j << endl;

}
else //atlanan koordinat buraya düşecek.
{
cout << "atlanan koordinat1: " <<i << " " << j << endl;

}

}
}
int sayac3=0;

if (cember_denklemi3 >=0 && cember_denklemi3 <=300&&(blue&&red&&green>0))
{

image.at<Vec3b>(Point(i, j)) = pixelColor;

//Vec3b color = image.at<Vec3b>(Point(i, j));
cout << "gelen koordinat2 : " << i << " " << j << endl;
if (ikiBoyutKarsilastirDizi[0][0] == 0)
//eğer dizinin içi boş ise vektörü ata. i ve j yi göster.
{
ikiBoyutKarsilastirDizi[0][0] = i;
ikiBoyutKarsilastirDizi[0][1] = j;
cout << "KUCUK" << i << " " << j << endl;

//      image.at<Vec3b>(Point(i, j)) = color2;
}
else //dizinin ilk elemanı atanmış ise karşılaştırma yap 5 fark kuralına uygunsa diziye ekle, uygun değilse vektörü atla. Atladıysan vektörü gösterme atlamadıysan vektörü göster.
{
for (int z = 0; z<100; z++)//dizinin büyüklüğü 100 olduğu için.
{//0 0 geldiğinde 5 ten büyük gözüktüğü için dahil ediyor 0'lar için özel bir şey lazım.
if (ikiBoyutKarsilastirDizi[z][0] != 0 && ikiBoyutKarsilastirDizi[z][1] != 0) // birinci yada ikinci değer 0 değilse aramaya devam et.
{

/* 287 365 yüzünden and or oldu */if (abs(ikiBoyutKarsilastirDizi[z][0] - i) >= 5 || abs(ikiBoyutKarsilastirDizi[z][1] - j) >= 5) // eğer daha önce diziye atanmış vektörün x ve y'si yeni eklenmeye çalışan vektörün x ve y' sinden 5 fazla yada eksik mi kontrolü. abs'ın amacı -3 yada -2 çıkma durumunda olayı kurtarmak.
{// Doğruysa,atlamadığımız için karşılaştırma dizisine ata,göster.
//sürekli olarak 1'e yada 0 a kaydediyor dizideki ilk 0 indisini bul demek lazım.iptal kontrolü dışarı çıkar.

sayac3 = z;

}
else
{

sayac3 = -1;
break;
}
}
}
//bütün değerlerin kontrolü yapıldıktan sonra eleman eklenmeli ve gösterilmeli.
if (sayac3 != -1)
{

ikiBoyutKarsilastirDizi[sayac3 + 1][0] = i;
ikiBoyutKarsilastirDizi[sayac3 + 1][1] = j;
cout << "KUCUK" << i << " " << j << endl;

}
else //atlanan koordinat buraya düşecek.
{
cout << "atlanan koordinat2: " <<i << " " << j << endl;

}

}
}

}
}
imshow("Image", image);
int k = waitKey();
imwrite("5.jpg", image);
//waitKey( 0 );
return(0);
}

Last edited by a moderator: Mar 13, 2015
2. Mar 14, 2015

### JhpMeer

I am sorry. But your description is not clear enough. From your code I can see your native language is Turkish and you probably cannot speak or write English too well. If you want to program on a professional level in the future I urge you to learn English.
In the professional world software is documented in English so that everyone can understand your program. And when you want to build upon a program from someone else it would be very difficult to do so if it was written in a language you don't understand