OpenCV12(角点检测和进度条显示)

1.角点的检测

主要的实现函数为cvGoodFeaturesToTrack

2.进度条

主要的实现函数为cvCreateTrackbar("ccc","Original",&value,count,0);//注意ccc是进度条的名称,可以显示在图上;Original是视窗的名称

示例代码:

#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
#include "cxcore.h"


using namespace cv;


int _tmain(int argc, _TCHAR* argv[])
{
	IplImage* src = cvLoadImage("D:\\PERSONAL\\Picture\\jiaodianDemo.jpg",CV_LOAD_IMAGE_UNCHANGED);
	IplImage* src_1 = cvCreateImage(cvGetSize(src),IPL_DEPTH_8U,1);
	IplImage* src_32 = cvCreateImage(cvGetSize(src),IPL_DEPTH_32F,1);
	cvCvtColor(src,src_1,CV_BGR2GRAY);
	cvCvtScale(src_1,src_32,1.0,0.0);//将八位图像转化为32位

	//角点检测
	IplImage* eigImage = cvCreateImage(cvGetSize(src),IPL_DEPTH_32F,1);//eigImage和tempImage都是32F,大小个src相同
	IplImage* tempImage = cvCreateImage(cvGetSize(src),IPL_DEPTH_32F,1);//输入src可以是8U或者32F
	CvPoint2D32f corners[50] = {NULL};
	double quality_level = 0.01;//
	double min_distance = 20;//返回角点之间的距离不小于min_distance
	int block_size = 3;
	double k = 0.04;
	int corner_count = 0;

	//实现函数
	cvGoodFeaturesToTrack(
		src_32,
		eigImage,
		tempImage,
		corners,
		&corner_count,
		quality_level,
		min_distance);//其余参数默认

	for( int i = 0; i < corner_count; i++ ){   
		cvCircle(src,cvPoint(cvRound(corners[i].x),cvRound(corners[i].y)),5,CV_RGB(255,0,0),2);
	} 

	//显示处理结果
	cvNamedWindow("Original");
	cvShowImage("Original",src);

	//绘制进度条,在本例中无用,纯粹为了试试效果
	int value(0);//进度条的当前值
	int count = 10;//进度条的最大值
	cvCreateTrackbar("ccc","Original",&value,count,0);//注意  &value  的写法

	cvWaitKey(0);
	cvReleaseImage(&src);
	cvDestroyWindow("Original");

	return 0;
}



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值