2016-04-01 39 views
-1
#include <opencv2/opencv.hpp> 
... 

IplImage* img = cvLoadImage("TestImage.jpg", 1); 
Mat mtx(img); 

このコードでは、imgをMat形式に変換する必要があります。しかし、私がこれを実装すると、「cv :: Matの初期化に一致するコンストラクタがありません」というエラーが表示されます。IplImageをMatに変換する際のエラー

どこが間違っていますか?構文は正しいはずなので、問題は別の場所にあると仮定します。私はOSX YosemiteでOpenCV 3.1.0とXcode 7.2.1を使用しています。

+3

なぜ動作しないのか分かりませんが、['cv :: imread(...)'](http://docs.opencv.org/3.1.0/d4)を使用できない理由があります/da8/group__imgcodecs.html#ga288b8b3da0892bd651fce07b3bbd3a56)? –

+2

3.0.0でそのコンストラクタを削除したためです。その時までにC api(と 'IplImage')は5年間廃止されていたので、それを使うべき理由はありません。 @DanMašekは言うとおり、画像を直接「Mat」に読み込むだけです。 – beaker

+0

@beaker良い点、私はソースを見て、私はそれを逃したようだ。 [別の](http://stackoverflow.com/a/30849778/3962537)[オプション](http://answers.opencv.org/question/23440/any-way-to-convert-iplimage-to -cvmat-in-opencv-300 /)...これはおそらく重複した質問です。 –

答えて

1

は、コンストラクタのCV ::マット(IplImages *)はコア/ SRC/matrix.cppから消えてしまったようだ事前にありがとうございます。ちなみに、私はそれに代わる方法を見つけました。

Mat mtx = cv::cvarrToMat(img); 

これでいいはずです。