opencv 对上述灰度图img1.jpg执行Shi-Tomasi角检测,最多保留10个角点,并将角点在彩色图img2.jpg上用绿色圆圈显示出来,圆圈的线宽设置为2、半径设置为5
时间: 2024-03-05 08:47:36 浏览: 98
好的,以下是对应的 Python 代码实现:
```python
import cv2
# 读取灰度图和彩色图
img1 = cv2.imread('img1.jpg', 0)
img2 = cv2.imread('img2.jpg')
# Shi-Tomasi 角检测
corners = cv2.goodFeaturesToTrack(img1, 10, 0.01, 10)
# 将角点在彩色图上用绿色圆圈显示出来
for corner in corners:
x, y = corner.ravel()
cv2.circle(img2, (x, y), 5, (0, 255, 0), 2)
# 显示结果
cv2.imshow('img2', img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
解释一下代码:
首先,我们使用 `cv2.imread` 分别读取了灰度图和彩色图。然后使用 `cv2.goodFeaturesToTrack` 函数进行 Shi-Tomasi 角检测,返回检测到的角点坐标。其中,参数 `10` 表示最多保留的角点数为 10,参数 `0.01` 是角点品质因子,参数 `10` 是最小欧氏距离。
接着,我们遍历所有检测到的角点,使用 `cv2.circle` 函数在彩色图上绘制绿色圆圈。其中,参数 `(x, y)` 是圆心坐标,参数 `5` 是圆圈半径,参数 `(0, 255, 0)` 是圆圈颜色,参数 `2` 是圆圈线宽。
最后,我们使用 `cv2.imshow` 函数显示结果,并等待用户按下任意键关闭窗口。
阅读全文