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

来源:互联网 发布:域名备案被注销 编辑:程序博客网 时间:2024/06/05 15:00
/*例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
原创粉丝点击