opencv函数approxPolyDP返回值获取坐标
函数approxPolyDP返回的是一个多边形的近似表示,而不是多边形的坐标。如果想获取多边形的坐标,可以使用函数cv2.contourArea来计算多边形的面积,并使用函数cv2.arcLength来计算多边形的周长。
以下是一个示例代码,演示如何获取多边形的坐标:
import cv2
# 读取图像
image = cv2.imread('image.jpg')
# 转换为灰度图像
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 进行边缘检测
edges = cv2.Canny(gray, 50, 150)
# 寻找轮廓
contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 遍历轮廓
for contour in contours:
# 近似多边形
epsilon = 0.02 * cv2.arcLength(contour, True)
approx = cv2.approxPolyDP(contour, epsilon, True)
# 绘制多边形
cv2.drawContours(image, [approx], 0, (0, 255, 0), 2)
# 获取多边形的坐标
for point in approx:
x, y = point[0]
print('x:', x, 'y:', y)
# 显示图像
cv2.imshow('image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
在上述代码中,我们首先读取图像并将其转换为灰度图像。然后,我们使用Canny边缘检测算法来检测图像的边缘。接下来,我们使用cv2.findContours函数找到图像中的轮廓。然后,我们遍历每个轮廓,使用cv2.approxPolyDP函数近似多边形,并使用cv2.drawContours函数绘制多边形。最后,我们遍历近似多边形的每个点,并打印其坐标。
原文地址: http://www.cveoy.top/t/topic/h1Zc 著作权归作者所有。请勿转载和采集!