2013-02-27 103 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。