2013-11-28 50 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