学习OpenCV_例2.6 例2.7 进行放缩处理并在放缩后的图像中寻找边缘

/*例2.6*/
/*例2.7*/


#include "highgui.h"
#include "cv.h"

//使用cvPyrDown()创建一个宽度和高度为输入图像一般尺寸的图像
IplImage* doPyrDown(IplImage* in, int filter = IPL_GAUSSIAN_5x5)
{
	//Best to make sure input image is divisible by two  

	assert(in->width % 2 == 0 && in->height % 2 == 0);

	IplImage* out = cvCreateImage(cvSize(in->width / 2, in->height / 2), in->depth, in->nChannels);
	cvPyrDown(in, out); //  
	return (out);
};

/*Canny边缘检测将输出写入一个单通道(灰度级)图像*/
IplImage* doCanny(IplImage* in, double lowThresh, double highThresh, double aperture)
{
	if (in->nChannels != 1) //判断输入图像是否为单通道,否则退出
	{
		return 0;  //Canny only handles gray scale images
	}

	IplImage* out = cvCreateImage(CvSize(cvGetSize(in)), IPL_DEPTH_8U, 1);
	
	cvCanny(in, out, lowThresh, highThresh, aperture);
	return(out);

}

int main(int argc, char** argv){
	IplImage* in = cvLoadImage("E:/lena.png"); 
	IplImage* out;

	out = doPyrDown(in, IPL_GAUSSIAN_5x5);
	out = doPyrDown(out, IPL_GAUSSIAN_5x5);
	out = doCanny(out, 10,100, 3);


	cvNamedWindow("Input", CV_WINDOW_AUTOSIZE);
	cvNamedWindow("Output", CV_WINDOW_AUTOSIZE);

	cvShowImage("Input", in);
	
	cvShowImage("Output", out);
	cvWaitKey(0); //必需的


	cvReleaseImage(&in);
	cvReleaseImage(&out);


	cvDestroyWindow("Input");
	cvDestroyWindow("Output");
	return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值