OpenCV卷积操作

来源:互联网 发布:微信公众号淘宝客制作 编辑:程序博客网 时间:2024/06/03 12:55

卷积操作,是各种图像处理的基础,原理不难,在这里不做赘述,网络上已经有了很多很好的例子,在这里直接上代码。

注意代码中两种的方法的使用及注意事项。

OpenCV卷积函数:

void cvFilter2D( const CvArr*  src,

                             CvArr*             dst,

                             const CvMat* kernel,

                             CvPoint           anchor=cvPoint(-1,-1)

                          );

#include <cv.h>#include <highgui.h>using namespace std;int main(){IplImage* src1=cvLoadImage("D:\\Korea Documents\\Pictures\\Wallpaper\\Attitude.jpg");IplImage* src=cvCreateImage(cvSize(700,400),src1->depth,src1->nChannels);cvResize(src1,src);IplImage* dst=cvCloneImage(src);/*Kernal的两种建立方式*///1.cvmSet不支持分数!!!CvMat *k1;k1=cvCreateMat(3,3,CV_32FC1);/*cvmSet(k1,0,0,1/16);cvmSet(k1,0,1,2/16);cvmSet(k1,0,2,1/16);cvmSet(k1,1,0,2/16);cvmSet(k1,1,1,4/16);cvmSet(k1,1,2,2/16);cvmSet(k1,2,0,1/16);cvmSet(k1,2,1,2/16);cvmSet(k1,2,2,1/16);*/cvmSet(k1,0,0,0.0625);        cvmSet(k1,0,1,0.125);        cvmSet(k1,0,2,0.0625);        cvmSet(k1,1,0,0.125);        cvmSet(k1,1,1,0.25);        cvmSet(k1,1,2,0.125);        cvmSet(k1,2,0,0.0625);        cvmSet(k1,2,1,0.125);        cvmSet(k1,2,2,0.0625);//这种方法很方便!!/*float k1[9]={1,2,1,2,4,2,1,2,1};for(int i=0;i<9;i++){k1[i]=(float)k1[i]/16;}CvMat k2=cvMat(3,3,CV_32F,&k1);*/cvFilter2D(src,dst,k1);//卷积操作cvNamedWindow("src");cvNamedWindow("dst");cvShowImage("src",src);cvShowImage("dst",dst);cvWaitKey(0);cvReleaseImage(&src);            cvReleaseImage(&dst);              cvDestroyAllWindows();  return 0;}


测试结果:




0 0
原创粉丝点击