/*例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;
}
学习OpenCV_例2.6 例2.7 进行放缩处理并在放缩后的图像中寻找边缘
最新推荐文章于 2024-03-28 21:36:34 发布