我想用python对检测到的左极值点进行亚像素检测,获得更精准的极值点,opencv
时间: 2024-02-13 09:04:28 浏览: 123
提供了一个函数 `cv2.cornerSubPix()` 可以实现亚像素级别的角点检测。这个函数需要传入一个灰度图像、角点坐标和一个搜索窗口的大小作为参数。下面是一个简单的使用示例:
```python
import cv2
import numpy as np
# 读取灰度图像
img = cv2.imread('image.jpg', 0)
# 检测角点
corners = cv2.goodFeaturesToTrack(img, 100, 0.01, 10)
# 亚像素级别的角点检测
sub_corners = cv2.cornerSubPix(img, corners, (5, 5), (-1, -1), (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001))
# 显示图像和角点
img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
for i in sub_corners:
x, y = i.ravel()
cv2.circle(img, (x, y), 3, (0, 0, 255), -1)
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这段代码使用 `cv2.goodFeaturesToTrack()` 函数检测图像中的角点,然后使用 `cv2.cornerSubPix()` 函数对检测到的角点进行亚像素级别的检测。最后在图像中显示检测到的角点。
阅读全文