OpenCV Mat格式

时间:2012-11-08 20:24:16

标签: c++ opencv

阅读

中的图片

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

和walla ......

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时,图像就在那里。

2 个答案:

答案 0 :(得分:3)

cvHaarDetectObjects期待IplImageCvMat,但您要传递cv::Mat个对象。

所以你需要这样的转换:

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

答案 1 :(得分:2)

不,安德烈(@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月开始使用Opencv 2.3.1以来,这就是Haar探测器在C ++中的使用方式。Also let me attach a documentation.

以下是一个证据。 :)我在这个cv :: CascadeClassifier周围做了一个Haar_detector包装器 - 实际上是一个具有Haar特征的Adaboost级联分类器,因此得名。

The proof