【问题标题】:Contour Arrays in OpenCVOpenCV 中的等高线数组
【发布时间】:2015-12-21 22:07:46
【问题描述】:

在另一位用户的帖子中,他们讨论了使用 OpenCV 的霍夫圆变换来检测和绘制公牛目标 here 上的每个环时遇到的问题。一个提议的解决方案是使用轮廓来定位每个圆。当我尝试同样的事情时,我的结果正是我想要的。唯一的问题是我正在尝试创建的程序需要一系列圆,每个圆环上都有一个圆,这样我就可以计算到中心的距离,从而计算给定点所在的特定圆环。

如果提到的帖子遵循代码,我有以下内容:

import cv2
import numpy as np

image = cv2.imread('bull.png')
image_copy = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
grayscaled_image = cv2.cvtColor(image_copy, cv2.COLOR_GRAY2BGR)

cv2.imshow("confirm", grayscaled_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

_,contours,_  = cv2.findContours(255 - image_copy, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE)
print(contours)

cv2.drawContours(image, contours, -1, color=(0,255,0), thickness=1)

cv2.imshow("detected circles", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

这给了我与链接帖子中所示相同的结果。

这很棒。我喜欢进步。但是,我最初尝试使用与链接海报相同的方法,因为我喜欢圆圈提供的坐标和半径信息。

我在OpenCV's tutorials 之一中发现您可以包含带有圆形、矩形或椭圆形的轮廓。对于单个轮廓,本教程相当容易理解,但在我的代码中,我不知道_,contours,_ 是什么意思。它是某种数组吗?如何访问各个轮廓?当我尝试打印变量时,它给了我将近 4,000 行。当然,我不会在这里发布它们,但它们似乎是一组坐标。

所以我的问题是:如何才能将这组轮廓转换为更易于管理的圆圈?

【问题讨论】:

    标签: python arrays opencv


    【解决方案1】:

    正如我在上一个问题中提到的,您可以在每个轮廓上使用minEnclosingCircle。你会得到圆心和半径。

    【讨论】:

      猜你喜欢
      • 2013-01-29
      • 2022-10-22
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多