在Jupyter中将图片进行Susan角点检测,哈里斯角点检测
时间: 2023-11-27 19:49:26 浏览: 68
首先,我们需要导入必要的库和图像:
```python
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('image.jpg')
```
接下来,我们可以使用Susan角点检测算法来检测图像中的角点:
```python
# Susan角点检测
susan = cv2.SusanCornersDetector()
corners = susan.detect(img)
# 绘制检测到的角点
img_copy = np.copy(img)
for corner in corners:
x, y = corner.ravel()
cv2.circle(img_copy, (x, y), 5, (0, 255, 0), 2)
plt.imshow(cv2.cvtColor(img_copy, cv2.COLOR_BGR2RGB))
plt.show()
```
接下来,我们可以使用哈里斯角点检测算法来检测图像中的角点:
```python
# 哈里斯角点检测
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
gray = np.float32(gray)
dst = cv2.cornerHarris(gray, 2, 3, 0.04)
# 通过阈值来筛选角点
img_copy = np.copy(img)
img_copy[dst > 0.01 * dst.max()] = [0, 0, 255]
plt.imshow(cv2.cvtColor(img_copy, cv2.COLOR_BGR2RGB))
plt.show()
```
最后,我们可以将两种方法检测到的角点进行对比:
```python
img_copy1 = np.copy(img)
for corner in corners:
x, y = corner.ravel()
cv2.circle(img_copy1, (x, y), 5, (0, 255, 0), 2)
img_copy2 = np.copy(img)
img_copy2[dst > 0.01 * dst.max()] = [0, 0, 255]
fig, axs = plt.subplots(1, 2, figsize=(15, 15))
axs[0].imshow(cv2.cvtColor(img_copy1, cv2.COLOR_BGR2RGB))
axs[0].set_title('Susan Corner Detection')
axs[1].imshow(cv2.cvtColor(img_copy2, cv2.COLOR_BGR2RGB))
axs[1].set_title('Harris Corner Detection')
plt.show()
```
这样就可以在Jupyter中使用Susan角点检测和哈里斯角点检测算法来检测图像中的角点了。