Opencv学习 Canny加滚动条

参考opencv教程基础篇的  第五章的代码   记录一下以备后用

#include "cvliblink.h"
#include <opencv2/opencv.hpp>

char windowsname[]="Edge";
char tbarname[]="Threshold";
int edge_thresh=1;

IplImage *image = 0;
IplImage *cedge = 0;
IplImage *gray = 0;
IplImage *edge = 0;

void on_trackbar(int handle)		//滚动条函数
{
	cvSmooth(gray,edge,3,3,0);		//先平滑边缘检测效果好
	cvNot(gray,edge);

	cvCanny(gray,edge,(float)edge_thresh,(float)edge_thresh*3,3);	//因为canny的经典是最低阈值是最高阈值的1/3
	cvZero(cedge);
	cvCopy(image,cedge,edge);
	cvShowImage(windowsname,cedge);
}

int main(int argc,char **argv)
{
//	char *filename = argc ==2?argv[1]:(char*)"1.bmp";
	char *filename = argc ==2?argv[1]:(char*)"C:\\Users\\Public\\Pictures\\Sample Pictures\\perspective-quadrilateral-src-img.jpg";
//要说一下的是文件名最好是英文的,中文的可能会引发意想不到的问题
	if ((image = cvLoadImage(filename,1))==0)
	{
		return -1;
	}
	cvNamedWindow("image");
	cvShowImage("image",image);
	cedge = cvCreateImage(cvGetSize(image),IPL_DEPTH_8U,3);
	gray = cvCreateImage(cvGetSize(image),IPL_DEPTH_8U,1);
	edge = cvCreateImage(cvGetSize(image),IPL_DEPTH_8U,1);
	cvCvtColor(image,gray,CV_BGR2GRAY);

	cvNamedWindow(windowsname,1);
	cvCreateTrackbar(tbarname,windowsname,&edge_thresh,100,on_trackbar);
	on_trackbar(0);

	cvWaitKey(0);
	cvReleaseImage(&image);
	cvReleaseImage(&gray);
	cvReleaseImage(&edge);
	cvReleaseImage(&cedge);
	cvDestroyWindow("image");
	cvDestroyWindow(windowsname);


	return 0;
}

效果图如下:


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值