2015-12-09 182 views
2

當前情況:我想檢測圖像內的矩形(或方塊),其中這些矩形的輪廓不是一致的。像棋盤一樣,外輪廓有整體。OpenCV 3.0活動輪廓(蛇)算法

可能的解決方案:我想實現一個活動輪廓算法,它應該可以幫助我檢測物體的外部輪廓。我知道物體外的某些點,只要物體適合它就可以用來收縮和合適點。

搜索:我發現一個較舊的openCV版本的cvSnakeImage函數,它不被維護,不應該再使用。我找到了一個活躍的輪廓C++實現,它還使用了一個較老的openCV和boost庫。我已經嘗試過,但無法構建代碼。 HiDiYANG/ActiveContour

問:是否有可用的電流實現主動輪廓算法在OpenCV的?是否有最佳的實施方案,我應該花時間瞭解實施情況?

示例圖像: 我有灰色邊框上的點的第一個圖像,並希望得到紅色的矩形(第二圖像)。

Example Image enter image description here

+1

cvSnakes不在opencv3 – berak

+0

您應該發佈幾張圖片以及您期待的結果。很可能你試圖以錯誤的方式解決這個問題。 – Miki

回答

1

對於你uplaoded圖像,在輪廓的邊界框簡單的工會應該給你你想要的結果。 'bb_union'是您需要爲自己編寫的功能。

import cv2 

img = cv2.imread('path to your image') # BGR image 
im = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 
im = 255 - im # your contours are black, so invert the image 
_, contours, hierarchy = cv2.findContours(img, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE) 
bb = None 
for cnt in contours: 
    rect = cv2. boundingRect(cnt) 
    if (bb is None): 
     bb = rect 
     continue 
    bb = bb_union(rect, bb) 
cv2.rectangle(img, bb, (0,0,255), 2)