2016-06-08 157 views
0

如何使用OpenCV從圖像中檢測矩形或五邊形?我有名片的照片,我必須檢測它們。我試過HoughLinesP()函數,但它只是查找線條。OpenCV - 矩形或五邊形的檢測

我必須檢測圖片上方的形狀並擴展圖像以顯示矩形的相交點。

+0

_「和它的發現只是線」_這是線的Hough變換的目的。請顯示一些圖像和一些代碼,並查看[問] – Miki

回答

1

你可以按照下面的步驟:

  1. 查找使用findContours圖像中的輪廓。

  2. 執行approxPoly以獲取圖像中存在的所有輪廓的多邊形形狀。

  3. 檢查逼近輪廓尺寸(邊數在多邊形):

    如果邊的數目爲4 =>矩形

    如果邊的數目爲5 =>五角

的代碼是蟒蛇,但應該很容易轉換爲C++:

import cv2 

gray = cv2.imread('img.png',0) 

ret,thresh = cv2.threshold(gray,127,255,1) 

contours,h = cv2.findContours(thresh,1,2) 

for cnt in contours: 
     approx = cv2.approxPolyDP(cnt,0.01*cv2.arcLength(cnt,True),True) 
    if len(approx)==5: 
     print "pentagon" 
    elif len(approx)==4: 
     print "rectangle" 
+1

這隻適用於瑣碎的圖像。但是,這是一個開始...... D你可以發佈一個片段來展示如何做到這一點? – Miki

+0

@Miki,我不知道你的案例中「瑣碎的圖像」是什麼,如果你有圖像的例子,它可能不適合他們,編輯你的問題,並將它們連接起來。 –

+0

這不是我的問題; D – Miki

0

關於如何檢測圖像中的矩形的很好的例子。檢查這link