/examples/opencv/src/circle_detection.cpp
C++ | 29 lines | 26 code | 3 blank | 0 comment | 1 complexity | b11212efa4a5d6701a599fec54328684 MD5 | raw file
- #include <cv.h>
- #include <highgui.h>
- #include <math.h>
- int main(int argc, char** argv)
- {
- IplImage* img = cvLoadImage("view_0002.png", 1);;
- IplImage* gray = cvCreateImage(cvGetSize(img), 8, 1);
- CvMemStorage* storage = cvCreateMemStorage(0);
- cvCvtColor(img, gray, CV_BGR2GRAY);
- cvSmooth(gray, gray, CV_GAUSSIAN, 9, 9);
- CvSeq* circles = cvHoughCircles(gray, storage,
- CV_HOUGH_GRADIENT, 2, 20, 10, 5, 5, 20);
- int i;
- for (i = 0; i < circles->total; i++)
- {
- float* p = (float*)cvGetSeqElem( circles, i );
- cvCircle( img, cvPoint(cvRound(p[0]),cvRound(p[1])),
- 3, CV_RGB(0,255,0), -1, 8, 0 );
- cvCircle( img, cvPoint(cvRound(p[0]),cvRound(p[1])),
- cvRound(p[2]), CV_RGB(255,0,0), 3, 8, 0 );
- }
- cvNamedWindow( "circles", 1 );
- cvShowImage( "circles", img );
- cvWaitKey(0);
-
- return 0;
- }