Opencv比较Rects

时间:2013-11-28 22:16:40

标签: opencv rect mat

我通过调用DetectMultiScale得到一个Rect向量:

face_cascade.detectMultiScale(ImgGray,faces,1.1,2,0|CV_HAAR_SCALE_IMAGE);

但比较需要Mat:

compare(OriginalImg,roi,dist,CMP_EQ);

如何将Rect转换为Mat进行比较,还是有比较Rects的方法?

2 个答案:

答案 0 :(得分:3)

0 - 它是compare,而不是detect。它执行per element comparison

1-你不能将Rect转换为Mat,因为一个定义了一个4点几何形状,而另一个定义了一个3D矩阵。

2-您可crop Mat Rect Matcompare内{{1}}

3-面部识别并不那么简单。请查看this tutorial

答案 1 :(得分:2)

如果你想比较2张图片,你的compare函数将2 cv :: Mat作为第一个输入。 要从ImgGray获取roi,您必须从detectMultiScale

给出的投资回报率中提取新的Mat
Mat ImgGray;
vector<Rect> faces;
face_cascade.detectMultiScale(ImgGray,faces,1.1,2,0|CV_HAAR_SCALE_IMAGE);
Rect roiRect = faces[0];
Mat roi = ImgGray (roiRect);
compare(OriginalImg,roi,dist,CMP_EQ);

OriginalImgdistroi具有相同的尺寸和类型。 这会解决您的问题吗?