(*itc)[0],(*itc)[1]
这个就是圆心坐标啊。
(*itc)[0],(*itc)[1]是point类型的,肯定不能直接cout啊,point。x point。y才能直接输出嘛
cout<<"圆心坐标x= "<<cvRound(p[0])<<endl<<"圆心坐标y= "<<cvRound(p[1])<<endl;
cout<<"半径="<<cvRound(p[2])<<endl; 这就是圆心输出语句啊
line[1], 表示什么呢?
#include
#include
#include
using namespace std;
int main()
{
IplImage* src = NULL;
IplImage* dst = NULL;
IplImage* color = NULL;
src = cvLoadImage ("d:\image12.bmp", 1);
dst = cvCreateImage (cvGetSize(src), IPL_DEPTH_8U, 1);
if (src->nChannels == 1)
{
dst = cvCloneImage (src);
}
else
{
cvCvtColor (src, dst, CV_RGB2GRAY);
}
CvMemStorage* storage = cvCreateMemStorage (0);
cvSmooth (dst, dst, CV_GAUSSIAN, 5, 5);
CvSeq* circles = cvHoughCircles (dst, storage, CV_HOUGH_GRADIENT, 2, dst->width / 3, 300, 100, 0, 200);
color = cvCreateImage (cvGetSize(src), IPL_DEPTH_8U, 3);
cvCvtColor (dst, color, CV_GRAY2RGB);
for (int i = 0; i < circles->total; i++)
{
float* p = (float*)cvGetSeqElem (circles, i);
CvPoint pt = cvPoint (cvRound(p[0]), cvRound(p[1]));
cvCircle (color, pt, cvRound(p[2]), CV_RGB(255, 0, 0), 3, 8, 0);
cvLine( color, pt, line[1], CV_RGB(255,0,0), 3, 8 );//draw Radius
//cvCircle (color, pt, , CV_RGB(255, 0, 0), 3, 4, 0);//draw Circle center
cout<<"圆心坐标x= "<<cvRound(p[0])<<endl<<"圆心坐标y= "<<cvRound(p[1])<<endl;
cout<<"半径="<<cvRound(p[2])<<endl;
}
cvNamedWindow ("src", 1);
cvShowImage ("src", src);
cvNamedWindow ("circle", 1);
cvShowImage ("circle", color);
cvWaitKey (0);
cvReleaseMemStorage (&storage);
cvReleaseImage (&src);
cvReleaseImage (&dst);
cvReleaseImage (&color);
return 0;}