0
在另一个用户的帖子中,他们讨论了他们如何使用OpenCV的霍夫圆变换来检测和绘制一个公牛目标上的每个环。提出的解决方案是改为使用轮廓来定位每个圆。当我尝试同样的事情时,我的结果正是我所期待的;唯一的问题是,我试图创建的程序需要一系列的圆圈,每个圆环上有一个圆圈,以便我可以计算距离中心的距离,从而计算给定点存在的特定环。OpenCV中的轮廓阵列
继代码,如果提到的文章中,我有以下几点:
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,_
的含义。它是某种阵列吗?我如何访问各个轮廓?当我尝试打印变量时,它给了我近4000行。当然,我不会在这里发布它们,但它们似乎是一组坐标。
所以我的问题是:我怎样才能将这种轮廓分组转换为更易于管理的圆?