yyzn  2022-04-08 05:07:30  深度学习 |   查看评论   

由于有些输出的图像与输入图像相比,大小深度和通道数目都不一样,所以不能使用输出图像覆盖输入图像的方法。有几个封装好的函数在这方面很有用,它们包含了为输出图像分配内存的工作,也同时包含了图像处理等变换。 首先对原RGB图像进行灰度处理。 然后利用cvPyrDown()创建一幅高度宽带均为输入图像一半尺寸的图像。 最后利用Canny边缘检测输出一个单通道(灰度级)图像。 环境:WIN7 32bits+VS2010+OpenCV2.2.0 代码如下:#include stdafx.h#include cv.h#include <cxcore.h>#include <highgui.h>//第一个函数:缩放处理函数 IplImage*doPyrDown(IplImage*in,int filter=IPL_GAUSSIAN_5x5){ 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只能处理灰度图 IplImage* out = cvCreateImage( cvGetSize( in ), in->depth, //IPL_DEPTH_8U, 1); cvCanny( in, out, lowThresh, highThresh, aperture ); //函数的第二及第三个参数为两个阈值。小阈值用来控制边缘连接,大的阈值用来控制强边缘的初始分割 return( out );};int main( int argc, char** argv ){cvNamedWindow(Example RGB, CV_WINDOW_AUTOSIZE ); cvNamedWindow(Example Gray, CV_WINDOW_AUTOSIZE ); cvNamedWindow(Example Pyr, CV_WINDOW_AUTOSIZE ); cvNamedWindow(Example Canny, CV_WINDOW_AUTOSIZE );IplImage* img_rgb = cvLoadImage(cube.jpg);//载入原RBG图 IplImage* out;cvShowImage(Example RGB,img_rgb );//显示原RBG图out = cvCreateImage( cvSize( img_rgb->width,img_rgb->height ), img_rgb->depth, 1); cvCvtColor(img_rgb, out ,CV_BGR2GRAY);//把载入图像转换为灰度图 cvShowImage(Example Gray, out );//显示灰度图out = doPyrDown( out ); out = doPyrDown( out );//执行两次缩小处理 cvShowImage(Example Pyr, out );//显示缩小图out = doCanny( out, 10, 100, 3 );//进行Canny边缘检测 cvShowImage(Example Canny, out );//显示canny边缘检测图cvWaitKey(0);cvReleaseImage( &out);//通过每个独立独立阶段处理图像,简化了流程cvDestroyWindow(Example Gray);cvDestroyWindow(Example Pyr);cvDestroyWindow(Example Canny);}

打印cv_version,这个字符串即可。常用的opencv函数速查1、cvloadimage:将图像文件加载至内存;2、cvnamedwindow:在屏幕上创建一个窗口;3、cvshowimage:在一个已创建好的窗口中显示图像;

 

除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自OpenCV图像处理 尺寸缩放函数dopyrdown

留言与评论(共有 0 条评论)
   
验证码:
[lianlun]1[/lianlun]