2011-03-27 36 views
1

誰も問題に何ができるかを知っている:私が使用している場合OpenCVのC++とcvSmoothは

error: cannot convert `cv::Mat' to `const CvArr*' for argument `1' to `void 
cvSmooth(const CvArr*, CvArr*, int, int, int, double, double)'

cvSmooth(origImage, grayImage1, CV_BLUR,3);

が、私はエラーを受け取っ

cvtColor(origImage, grayImage, CV_BGR2GRAY);

がすべてうまく働きました。キャプチャはラップトップカメラから(リアルタイム)です。

+0

あなたはどう思いますか? cvtColorを使用するとすべて正常に動作します。 origImageはカメラからのカラーリアルタイムの「ピクチャ」です。 – thaking

+0

私はビデオではなくビデオが必要だと思いますか? – thaking

答えて

9

cv::Matは、OpenCVのC++バージョンの新しい構造です。 cvSmooth()は古いC APIのものです。 CインターフェイスとC++を混在させないでください!

introductionを読むのは少し時間がかかることをお勧めします。

また、opencv/modules/imgproc/src/smooth.cppをチェックすると、新しいC++インターフェイスのcvSmooth(CV_BLUR)と同等のcv::boxFilter()が表示されます。

+0

私はそれを見ていただきありがとうございます。 – thaking

+0

答えが更新されました。あなたが探しているものと同等のものは 'cv :: boxFilter()'です。 – karlphillip

+0

これも役に立ちました:http://stackoverflow.com/questions/8870927/what-is-the-c-replacement-to-the-old-cvsmoothsrc-dst-cv-median-3 – imbrizi

2

OpenCV 1.x API(CvArr)と2.x API(cv :: Mat)を混在させないように注意してください。 あなたはどこかの例を試してみたと思います。