0

私はopencvとc ++が初めてです。iplimage と iplimage* の違いは何ですか? arg[1] に iplimage* が必要な cvHaarDetectObjects を使用しました。マット形式のフレームがあります。Mt を iplimage* に変換するにはどうすればよいですか? (mat を iplimage に変換する方法を見つけましたが、iplimage には変換しませんでした*)。

真のものは次のとおりです。

iplimage* frame=cvLoadImage("1.jpg");
objects = cvHaarDetectObjects( frame, face_cascade, storage, scale_factor, 1 );

しかし、私は使用したい:

Mat frame;
//some functions are performed on frame
objects = cvHaarDetectObjects( frame, face_cascade, storage, scale_factor, 1 );
4

2 に答える 2

1

IplImage* は、画像データ構造体 IplImage へのポインターです。opencv の C API で使用されます。

opencv 2.0 以降、C++ API が導入され、「Mat」構造が IplImage に置き換わりました。

C API 関数は IplImage の代わりに IplImage* を受け入れ、C++ API 関数は Mat を受け入れます。

2 つのソリューション:

Mat frame;
// apply pre-processing functions
IplImage* frame2 = cvCloneImage(&(IplImage)frame);
objects = cvHaarDetectObjects(frame2, face_cascade, storage, scale_factor, 1 );

また

&frame を受け入れるC++ API 関数を使用し、haardetectobjects で同じ作業を行います。

于 2013-06-29T13:08:04.220 に答える