Python OpenCV 角点检测:提取坐标并在图像上标记
使用 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()
代码解释:
- 导入必要的库: 导入
cv2(OpenCV) 和numpy库。2. 加载图像: 使用cv2.imread()函数加载图像。3. 转换为灰度: 使用cv2.cvtColor()函数将图像转换为灰度。4. 应用 Harris 角点检测: 使用cv2.cornerHarris()函数检测图像中的角点。5. 提取角点坐标: 获取检测到的角点的坐标,并使用np.argpartition()函数选择前 50 个最强的角点。6. 标记角点: 使用cv2.circle()函数在图像上绘制圆圈来标记角点的位置。7. 显示图像: 使用cv2.imshow()函数显示带有标记角点的图像。
使用方法:
- 将 'your_image.jpg' 替换为您要处理的图像的路径。2. 运行代码。
运行代码后,将打开一个窗口,显示带有标记角点的图像。红色圆圈表示检测到的角点位置。您可以通过调整 cv2.circle() 函数的参数来自定义圆圈的颜色、大小和粗细。
原文地址: https://www.cveoy.top/t/topic/LG0 著作权归作者所有。请勿转载和采集!