2013-02-27 80 views
1

我正在使用OpenCV 2.3.1。想要在opencv中顺畅cv :: Mat

我有一个cv :: Mat图像,我想申请一个平滑过滤器。不幸的是,所有我的代码查找是

void cvSmooth(const CvArr* src, CvArr* dst, int smoothtype=CV_GAUSSIAN, int size1=3, int size2=0, double sigma1=0, double sigma2=0); 

它使用CvArr而不是cv :: Mat。我无法找到关于如何在cv :: Mat和CvArr之间进行转换的解释。

任何援助与此将不胜感激。

回答

0

首先,只要你想,你加载你的形象,对我来说我用:

image = cvLoadImage("6mtEy.jpg"); 

据我所知如果你想使用这个功能,你的gona需要将你的Mat转换成cvArr(我的代码中的IplImage):

IplImage tmp = image; 

然后创建具有相同的大小等目的地的图像作为第一张图片:

IplImage *dst; 
dst = cvCreateImage(cvSize(tmp.width, tmp.height), tmp.depth, tmp.nChannels); 

然后你用你的函数:

cvSmooth(&tmp, dst, CV_GAUSSIAN, 1); 

最后你把结果回来垫:

image = dst; 

之后不要忘记摧毁你创建的IplImages。

相关问题