houghcircles.cpp
上传用户:banwdc
上传日期:2016-06-25
资源大小:2871k
文件大小:1k
源码类别:

OpenCV

开发平台:

Visual C++

  1. #include <cv.h>
  2. #include <highgui.h>
  3. #include <math.h>
  4. int main(int argc, char** argv)
  5. {
  6.     IplImage* img;
  7.     if( argc == 2 && (img=cvLoadImage(argv[1], 1))!= 0)
  8.     {
  9.         IplImage* gray = cvCreateImage( cvGetSize(img), 8, 1 );
  10.         CvMemStorage* storage = cvCreateMemStorage(0);
  11.         cvCvtColor( img, gray, CV_BGR2GRAY );
  12.         cvSmooth( gray, gray, CV_GAUSSIAN, 9, 9 ); // smooth it, otherwise a lot of false circles may be detected
  13.         CvSeq* circles = cvHoughCircles( gray, storage, CV_HOUGH_GRADIENT, 2, gray->height/4, 200, 100 );
  14.         int i;
  15.         for( i = 0; i < circles->total; i++ )
  16.         {
  17.              float* p = (float*)cvGetSeqElem( circles, i );
  18.              cvCircle( img, cvPoint(cvRound(p[0]),cvRound(p[1])), 3, CV_RGB(0,255,0), -1, 8, 0 );
  19.              cvCircle( img, cvPoint(cvRound(p[0]),cvRound(p[1])), cvRound(p[2]), CV_RGB(255,0,0), 3, 8, 0 );
  20.         }
  21.         cvNamedWindow( "circles", 1 );
  22.         cvShowImage( "circles", img );
  23.         cvWaitKey(0);
  24.     }
  25.     return 0;
  26. }