2024年3月30日发(作者:)

#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;itotal;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 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;

}