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 + -
显示快捷键?