我得到矩形的矢量通过调用DetectMultiScale:opencv的比较Rects
face_cascade.detectMultiScale(ImgGray,faces,1.1,2,0|CV_HAAR_SCALE_IMAGE);
但是比较需要垫:
compare(OriginalImg,roi,dist,CMP_EQ);
如何转换矩形到垫子上作出比较还是有比较Rects的方法?
我得到矩形的矢量通过调用DetectMultiScale:opencv的比较Rects
face_cascade.detectMultiScale(ImgGray,faces,1.1,2,0|CV_HAAR_SCALE_IMAGE);
但是比较需要垫:
compare(OriginalImg,roi,dist,CMP_EQ);
如何转换矩形到垫子上作出比较还是有比较Rects的方法?
如果你想比较2张图片,你的compare
函数以2 cv :: Mat作为第一个输入。 要采取的投资回报率从ImgGray
你必须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
具有相同的尺寸和类型来提取给出的ROI新垫。 这能解决你的问题吗?
0 - 它是compare
,而不是detect
。它执行per element comparison
1-您不能将Rect转换为Mat,因为一个定义了4点几何形状,而其他定义了3D矩阵。
2 - 您可以crop您Mat
用Rect
,然后使用新的Mat
内compare
3-人脸识别并非如此简单。请查看this tutorial。
转换成功,但出现以下错误: OpenCV错误:输入参数的大小不匹配(该操作既不是'array op array'(其中数组具有相同的大小和相同类型),也不是'array op scalar',也不是'scalar op array')比较 – Simon
在比较方法的文档中:src1:第一个输入数组或标量,当它是一个数组时,它必须有一个通道。单通道矩阵,确保OriginalImg仅由1个通道组成。 By The Way C.Canberk Bac关于特征识别并不是那么简单,即“比较”2 ROI。 – Marcassin