【发布时间】: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 行。当然,我不会在这里发布它们,但它们似乎是一组坐标。
所以我的问题是:如何才能将这组轮廓转换为更易于管理的圆圈?
【问题讨论】: