函数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函数绘制多边形。最后,我们遍历近似多边形的每个点,并打印其坐标。

opencv函数approxPolyDP返回值获取坐标

原文地址: http://www.cveoy.top/t/topic/h1Zc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录