2

で画像を読む

Mat img=imread("i000qa-fn.jpg",CV_LOAD_IMAGE_COLOR);

オブジェクトを検索してみてください...

faces = cvHaarDetectObjects(img,cascade, storage, 1.2, 2, CV_HAAR_DO_CANNY_PRUNING, Size(0, 0));

そしてワラ...

OpenCV Error: Bad flag (parameter or structure field) (Unrecognized or unsupported array type) in cvGetMat, file /media/Data/sdks/OpenCV-2.4.2/modules/core/src/array.cpp, line 2482

imshow を実行すると、画像は本来あるべき姿で表示されます。

4

2 に答える 2

3

cvHaarDetectObjectsIplImageまたは期待CvMatしていますが、オブジェクトを渡していcv::Matます。

したがって、次のような変換が必要です。

IplImage img1 = img;
faces = cvHaarDetectObjects(&img1, cascade, storage, 1.2, 2, CV_HAAR_DO_CANNY_PRUNING, Size(0, 0));
于 2012-11-08T20:50:08.603 に答える
2

いいえ、Andrey(@AndreyKamaev)、代わりに別の関数が必要です。

#include <opencv2/core/core.hpp>
#include <opencv2/objdetect/objdetect.hpp>
using namespace cv;

Mat img = imread(img_path);
CascadeClassifier haar_cascade.load(path);

vector<Rect> detection_rois;
haar_cascade.detectMultiScale(img, detection_rois, 1.2, 2, 
                                  0|CV_HAAR_DO_CANNY_PRUNING);

これが、2011年8月以降のOpencv2.3.1以降のC++でのHaar検出器の使用方法です。また、ドキュメントを添付させてください。

以下にその証拠があります。:)このcv::CascadeClassifierの周りにHaar_detectorラッパーを作成しました。これ、実際にはHaarのような機能を備えたAdaboostカスケード分類子であるため、この名前が付けられています。

の証拠

于 2012-11-23T13:50:03.477 に答える