#include #include int main(int argc,char**argv) { IplImage*img; if(argc==2&&(img=cvLoadImage(argv[1],1))!=0) { 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,gray->height/4,200,100); int i; for(i=0;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; } #include #include #include int main(int argc,char**argv) { IplImage*img; if(argc==2&&(img=cvLoadImage(argv[1],1))!=0) { 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,gray->height/4,200,100); int i; for(i=0;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; }