1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
IplImage* gray=cvLoadImage("../images/932.jpeg", CV_LOAD_IMAGE_GRAYSCALE);
IplImage* gray_original=cvLoadImage("../images/932.jpeg", CV_LOAD_IMAGE_GRAYSCALE);
CvMemStorage* storage = cvCreateMemStorage(0);
cvSmooth( gray, gray, CV_GAUSSIAN, 9, 9 ); // smooth it, otherwise a lot of false circles may be detected
CvSeq* circles = cvHoughCircles( gray, storage, CV_HOUGH_GRADIENT, 2, gray->height/4, 20000, 200);
int i;
cout<<"nombre de cercles trouvés : "<< circles->total<<endl;
system("pause");
for( i = 0; i < circles->total; i++ )
{
cout<<"nombre de cercles trouvés : "<< circles->total<<endl;
system("pause");
float* p = (float*)cvGetSeqElem( circles, i );
cvCircle( gray, cvPoint(cvRound(p[0]),cvRound(p[1])), 3, CV_RGB(0,255,0), -1, 8, 0 );
cvCircle( gray, cvPoint(cvRound(p[0]),cvRound(p[1])), cvRound(p[2]), CV_RGB(255,0,0), 3, 8, 0 );
}
cvNamedWindow( "circles", 1 );
cvShowImage( "circles", gray ); |
Partager