2015-12-09 183 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)