opencv python 曲率大一些的角点提取
时间: 2023-08-04 07:24:45 浏览: 196
要提取曲率较大的角点,可以使用Harris角点检测算法的改进版,称为Harris-Laplace算法。该算法结合了Harris角点检测和Laplace尺度空间的优点,可以在不同尺度上检测角点,并且对曲率较大的角点有更好的响应。
以下是使用OpenCV和Python实现Harris-Laplace角点检测的代码示例:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 计算Harris-Laplace角点
harris = cv2.cornerHarris(gray, blockSize=3, ksize=3, k=0.04)
harris = cv2.dilate(harris, None)
# 找到角点位置
thresh = 0.01 * harris.max()
corners = np.where(harris > thresh)
corners = np.column_stack((corners[1], corners[0]))
# 绘制角点
for x, y in corners:
cv2.circle(img, (x, y), 3, (0, 255, 0), -1)
# 显示结果
cv2.imshow('Harris-Laplace Corners', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上面的代码中,`cv2.cornerHarris()`函数用于计算Harris-Laplace角点,其中`blockSize`和`ksize`参数分别表示窗口大小和Sobel算子大小,`k`参数是Harris角点检测算法中的常数。然后使用`cv2.dilate()`函数对角点进行膨胀操作,以增加角点的大小和响应。接下来,使用`np.where()`函数和阈值来找到角点的位置。最后,使用`cv2.circle()`函数在图像上绘制角点。
阅读全文