python 图中,找出Shi-Tomasi corner
时间: 2024-10-04 19:04:54 浏览: 37
在Python中,你可以使用OpenCV (cv2) 的 `goodFeaturesToTrack()` 函数来寻找Shi-Tomasi角点。这是一种基于梯度算子的角点检测算法,它试图在局部区域内找到像素变化最大的位置,也就是边缘转折点,作为角点候选。
以下是基本步骤:
```python
import cv2
import numpy as np
# 加载图像
image = cv2.imread('your_image.jpg', 0) # 读取灰度图像
# 设置参数,这里选择Shi-Tomasi算法
corners_params = dict(
maxCorners=100, # 指定查找的最大角点数
qualityLevel=0.01, # 角点质量阈值
minDistance=7, # 最小邻域距离
blockSize=3 # 使用的窗口大小
)
# 找到角点
corners = cv2.goodFeaturesToTrack(image, mask=None, **corners_params)
# 如果找到角点,它们会存储在一个numpy数组里,每个角点是一个行向量
if corners is not None:
corners = np.int0(corners)
for i in corners:
x, y = i.ravel() # 提取出x和y坐标
cv2.circle(image, (x, y), 3, (0, 0, 255), -1) # 在原图上画出角点
# 显示结果
cv2.imshow("Corner Detection", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
阅读全文