opencv 霍夫圆变换识别网球 通过滑动条来修改参数

//2011/06/14  
#include "cv.h"  
#include "highgui.h"  
#include <stdio.h>  
#include"iostream"
using namespace std ;
IplImage* src = NULL  ;  
IplImage* dst = NULL ; 
IplImage* img = NULL ; 
IplImage* img1 = NULL ; 
IplImage* img2 = NULL ; 
static const char* wnd_name = "canny" ;  
static const char* file_name = "lena.jpg" ;  
static const char* trackbar_name = "threshold" ;  
void on_track( int pos )  
{ 


	 img1 = cvCreateImage (cvGetSize(img), IPL_DEPTH_8U, 1); 
	 img2 = cvCreateImage (cvGetSize(img), IPL_DEPTH_8U, 3);
	if (img->nChannels == 1)
		{
		img1= cvCloneImage (img);
		}
		else
		{
		cvCvtColor (img, img1, CV_RGB2GRAY); //转áa为a单죤通a?§道쨤
		}
	    CvMemStorage* storage=cvCreateMemStorage(0);
		CvSeq* circle = 0;

		cvSmooth( img1, img1, CV_GAUSSIAN, 5, 5 );
	 //   cvSmooth( img1, img1, CV_GAUSSIAN, 5, 5 ); 
	    cvSmooth( img1, img1, CV_GAUSSIAN, 5, 5 ); 
		circle = cvHoughCircles( 
		img1,
		storage,
		CV_HOUGH_GRADIENT,
		1, 
		32,
		50,
		pos,
		0,
		0
		);

		cvCvtColor (img1, img2, CV_GRAY2RGB); //转áa为a3通a?§道쨤



		for( int i = 0; i < circle->total; i++ )
		{
		float* p = ( float* )cvGetSeqElem( circle, i );

		CvPoint pt = cvPoint( cvRound( p[0] ), cvRound( p[1] ) ); //圆2心?坐á?标à¨o(ê?§p(ê?§0)ê?,ê?p(ê?§1)ê?)ê?
		cout<<p[0]<<"segrdghdj"<<p[1]<<endl;

			
		cvCircle(
			img2,
			pt,
			cvRound( p[2] ), 
			CV_RGB( 255, 0, 0 ),
			3
		); 	
		}

		cvNamedWindow("a",1);
		cvNamedWindow("b",1);
		cvNamedWindow("c",1);
		cvShowImage( "a",img);
		cvShowImage("b",img1);
		cvShowImage("c",img2);


}  
int main( int argc,char** argv)  
{  
    int value = 1 ;  
    img = cvLoadImage( "d:\\two_wangqiu.png",0 );  
  
    cvNamedWindow(wnd_name) ;  
    cvCreateTrackbar(  
                    trackbar_name,//const char* trackbarName,  
                    wnd_name,//const char* windowName,  
                    &value,//int* value,  
                    100,//int count,  
                    on_track//CvTrackbarCallback onChange   
    );  
    on_track(1);  
      
    cvWaitKey(0);  
      
    cvDestroyAllWindows();  
    cvReleaseImage(&src);  
    cvReleaseImage(&dst);  
    return 0 ;  
}  

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值