2

OpenCV2.3.1を使用しています。

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 );

これは、cv::Matの代わりにCvArrを使用します。cv::MatとCvArrの間で変換する方法についての説明が見つかりませんでした。

これに関する支援をいただければ幸いです。

4

2 に答える 2

4

ドキュメントに記載されているように:

注:この関数は廃止されました。GaussianBlur()blur()medianBlur()またはbilateralFilter()を使用します。

これらすべての関数には、C++インターフェイスが存在します。例:

void GaussianBlur(InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY=0, int borderType=BORDER_DEFAULT )
于 2013-02-27T13:18:59.493 に答える
1

最初にあなたはあなたが望むようにあなたの画像をロードします、私のために私は使用しました:

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

この関数を使用したい場合、私が知る限り、あなたのゴナはあなたのマットを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を破棄することを忘れないでください。

于 2013-02-27T14:15:19.683 に答える