【问题标题】:OpenCV 3.0 active contour (snake) algorithmOpenCV 3.0 主动轮廓(蛇)算法
【发布时间】:2016-03-14 13:28:40
【问题描述】:

当前情况:我想检测图像中的矩形(或正方形),其中这些矩形的轮廓不一致。就像棋盘,外轮廓有整体。

可能的解决方案:我正在尝试实现一个主动轮廓算法,它应该可以帮助我检测物体的外部轮廓。我知道对象之外的一些点,只要对象适合它,它们就可以用来缩小和适合这些点。

搜索:我找到了老openCV版本的cvSnakeImage函数,没有维护,不应该再使用了。我找到了一个活动轮廓 C++ 实现,它还使用了较旧的 openCV 和 boost 库。我已经尝试过,但无法构建代码。 HiDiYANG/ActiveContour

问题: OpenCV 中是否有当前可用的主动轮廓算法实现?是否有可用的最佳实施,我应该花时间了解实施?

示例图片: 我的第一张图像带有灰色边框上的点,并且想要获得红色矩形(第二张图像)。

【问题讨论】:

  • cvSnakes 在 opencv3 中消失了
  • 您可能应该发布一些图片,以及您所期望的结果。您很可能试图以错误的方式解决此问题。

标签: c++ opencv object-detection opencv-contour


【解决方案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)

【讨论】:

    猜你喜欢
    • 2021-01-12
    • 1970-01-01
    • 2015-12-29
    • 2022-12-04
    • 2023-03-21
    • 2018-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多