我通过调用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的方法?
答案 0 :(得分:3)
0 - 它是compare
,而不是detect
。它执行per element comparison
1-你不能将Rect转换为Mat,因为一个定义了一个4点几何形状,而另一个定义了一个3D矩阵。
2-您可crop Mat
Rect
Mat
,compare
内{{1}}
3-面部识别并不那么简单。请查看this tutorial。
答案 1 :(得分:2)
如果你想比较2张图片,你的compare
函数将2 cv :: Mat作为第一个输入。
要从ImgGray
获取roi,您必须从detectMultiScale
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);
OriginalImg
,dist
和roi
具有相同的尺寸和类型。
这会解决您的问题吗?