我正在使用Canny边缘检测器来检测白色背景上的物体,并想在其周围绘制一个矩形和一个圆形。我可以获取边界矩形的坐标,但不能获取OpenCV函数minAreaRectminEnclosingCircle的坐标。

import cv2
import numpy as np

img = cv2.imread(image.path, 0)
edges = cv2.Canny(img, 100, 200)

#Bounding Rectangle works
x, y, w, h = cv2.boundingRect(edges)

#This does not work
(x,y),radius = cv2.minEnclosingCircle(edges)

#This also does not work
rect = cv2.minAreaRect(edges)


错误:



我想这是因为Canny边缘检测器的结果格式错误,但是我找不到如何对其进行转换才能起作用的原因。

最佳答案

这些功能之间的区别在于boundingRect在图像上起作用,而minEnclosingCircleminAreaRect在2D点集上起作用。为了从Canny的输出中获得一个点集,您可以按照this tutorial的建议使用findCountours:

# im2, contours, hierarchy = cv.findContours(thresh, 1, 2) # OpenCV 3.x
contours, hierarchy = cv.findContours(thresh, 1, 2)        # OpenCV 4.x
cnt = contours[0]

rect = cv.minAreaRect(cnt)

(x,y),radius = cv.minEnclosingCircle(cnt)

关于python - OpenCV:Canny边缘检测器获取minEnclosingCircle,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56119075/

10-12 16:37