OpenCV 函数 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 函数返回值:获取多边形坐标详解

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

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