使用 Python 和 OpenCV 提取角点坐标并在图像上标记

本教程演示如何使用 Python 和 OpenCV 库执行角点检测并将检测到的角点标记在图像上。我们将使用 Harris 角点检测器来识别图像中的角点。

**代码示例:**pythonimport cv2import numpy as np

读取图像image = cv2.imread('your_image.jpg')

将图像转换为灰度图像gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

设定Harris角点检测的参数block_size = 2ksize = 3k = 0.04

执行Harris角点检测dst = cv2.cornerHarris(gray, block_size, ksize, k)

执行部分排序,获取最大的50个角点k = 50corner_indices = np.argpartition(dst.flatten(), -k)[-k:]

根据排序后的角点索引,提取角点坐标corners = np.array(np.unravel_index(corner_indices, dst.shape)).T

按照响应值降序排列sorted_corners = corners[np.argsort(dst[corner_indices])[::-1]]

在图像上绘制圆圈标记角点for corner in sorted_corners: cv2.circle(image, tuple(corner[::-1]), 5, (0, 0, 255), 2)

展示图像cv2.imshow('Corners', image)cv2.waitKey(0)cv2.destroyAllWindows()

代码解释:

  1. 导入必要的库: 导入 cv2 (OpenCV) 和 numpy 库。2. 加载图像: 使用 cv2.imread() 函数加载图像。3. 转换为灰度: 使用 cv2.cvtColor() 函数将图像转换为灰度。4. 应用 Harris 角点检测: 使用 cv2.cornerHarris() 函数检测图像中的角点。5. 提取角点坐标: 获取检测到的角点的坐标,并使用 np.argpartition() 函数选择前 50 个最强的角点。6. 标记角点: 使用 cv2.circle() 函数在图像上绘制圆圈来标记角点的位置。7. 显示图像: 使用 cv2.imshow() 函数显示带有标记角点的图像。

使用方法:

  1. 将 'your_image.jpg' 替换为您要处理的图像的路径。2. 运行代码。

运行代码后,将打开一个窗口,显示带有标记角点的图像。红色圆圈表示检测到的角点位置。您可以通过调整 cv2.circle() 函数的参数来自定义圆圈的颜色、大小和粗细。

Python OpenCV 角点检测:提取坐标并在图像上标记

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

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