1、 分别应用Harris和Shi-Tomasi方法检测图像bridge.jpg中的角点
时间: 2024-05-04 10:21:01 浏览: 110
首先,导入必要的库和加载图像:
```python
import cv2
import numpy as np
img = cv2.imread('bridge.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
```
然后,我们可以使用Harris方法来检测角点:
```python
# Harris corner detection
dst = cv2.cornerHarris(gray, 2, 3, 0.04)
# Threshold for an optimal value
img[dst > 0.01 * dst.max()] = [0, 0, 255]
cv2.imshow('Harris Corner Detection', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这将在图像中突出显示检测到的角点。在上面的代码中,我们使用`cv2.cornerHarris()`函数来计算角点的响应函数,并使用阈值来识别角点。
接下来,我们可以使用Shi-Tomasi方法来检测角点:
```python
# Shi-Tomasi corner detection
corners = cv2.goodFeaturesToTrack(gray, 50, 0.01, 10)
corners = np.int0(corners)
for i in corners:
x, y = i.ravel()
cv2.circle(img, (x, y), 3, 255, -1)
cv2.imshow('Shi-Tomasi Corner Detection', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上面的代码中,我们使用`cv2.goodFeaturesToTrack()`函数来检测图像中的角点,并使用`cv2.circle()`函数在每个角点周围画圆。
这两种方法都可以用来检测图像中的角点,但是它们在一些方面有所不同。Harris方法对噪声敏感,但对角点具有更好的响应;Shi-Tomasi方法在噪声方面更健壮,但对角点的响应不如Harris方法强烈。
阅读全文