首页 文章

OpenCV 3.0主动轮廓(蛇)算法

提问于
浏览
2

Current situation: 我想检测图像内部的矩形(或正方形),这些矩形的轮廓不是一致的 . 像棋盘一样,外轮廓有整体轮廓 .

Possible Solution: 我正在尝试实现一个活动轮廓算法,它应该帮助我检测对象的外部轮廓 . 我知道对象外面的一些点,只要对象适合它,就可以用来缩小和拟合点 .

Search: 我找到了较旧的openCV版本的cvSnakeImage函数,该函数未被维护,不应再使用 . 我找到了一个活跃的轮廓C实现,它也使用了较旧的openCV和boost库 . 我试过但是无法构建代码 . HiDiYANG/ActiveContour

Question: OpenCV中是否有当前实现的活动轮廓算法?是否有最佳实施方案,我应该花时间了解实施情况?

Example Image: 我有第一张图像,上面有灰色边框上的点,想要得到红色矩形(第二张图片) .

Example Image

enter image description here

1 回答

  • 1

    对于已经上传的图像,在轮廓边界框上的简单联合应该可以为您提供所需的结果 . '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)
    

相关问题