2013-11-28 40 views
0

我得到矩形的矢量通过调用DetectMultiScale:opencv的比较Rects

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

但是比较需要垫:

compare(OriginalImg,roi,dist,CMP_EQ); 

如何转换矩形到垫子上作出比较还是有比较Rects的方法?

回答

2

如果你想比较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); 

OriginalImgdistroi具有相同的尺寸和类型来提取给出的ROI新垫。 这能解决你的问题吗?

+0

转换成功,但出现以下错误: OpenCV错误:输入参数的大小不匹配(该操作既不是'array op array'(其中数组具有相同的大小和相同类型),也不是'array op scalar',也不是'scalar op array')比较 – Simon

+0

在比较方法的文档中:src1:第一个输入数组或标量,当它是一个数组时,它必须有一个通道。单通道矩阵,确保OriginalImg仅由1个通道组成。 By The Way C.Canberk Ba​​c关于特征识别并不是那么简单,即“比较”2 ROI。 – Marcassin

3

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

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

2 - 您可以cropMatRect,然后使用新的Matcompare

3-人脸识别并非如此简单。请查看this tutorial