阅读
中的图片 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时,图像就在那里。
答案 0 :(得分:3)
cvHaarDetectObjects
期待IplImage
或CvMat
,但您要传递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级联分类器,因此得名。