houghcircles.cpp
来自「于仕琪的OpenCV基础+教程的程序实例」· C++ 代码 · 共 45 行
CPP
45 行
#include <cv.h>#include <highgui.h>#include <math.h>int main(int argc, char** argv){ IplImage* img;
IplImage* src;
char *filename = "circles.png";
// if( argc == 2 && (img=cvLoadImage(argv[1], 1))!= 0)// {
src=cvLoadImage(filename, 1);
img=cvLoadImage(filename, 1);
IplImage* gray = cvCreateImage( cvGetSize(img), 8, 1 ); CvMemStorage* storage = cvCreateMemStorage(0); cvCvtColor( img, gray, CV_BGR2GRAY ); cvSmooth( gray, gray, CV_GAUSSIAN, 9, 9 ); // smooth it, otherwise a lot of false circles may be detected CvSeq* circles = cvHoughCircles( gray, storage, CV_HOUGH_GRADIENT, 2, gray->height/4, 200, 100 );// CvSeq* circles = cvHoughCircles( gray, storage, CV_HOUGH_GRADIENT, 2, 1, 200, 100 );
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( "src", 1 );
cvNamedWindow( "circles", 1 );
cvShowImage( "src", src ); cvShowImage( "circles", img );
cvWaitKey(0);
cvReleaseImage( &src);
cvReleaseImage( &img);
cvDestroyWindow("src");
cvDestroyWindow("circles");
// } return 0;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?