python opencv 实现Harris
时间: 2023-06-12 21:04:40 浏览: 98
Harris角点检测是一种经典的计算机视觉算法,它可以在图像中检测出角点。下面是使用Python和OpenCV实现Harris角点检测的步骤:
1. 导入必要的库
```python
import cv2
import numpy as np
```
2. 读取图像并转换为灰度图像
```python
img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
```
3. 计算图像中每个像素的Harris响应函数值
```python
dst = cv2.cornerHarris(gray, 2, 3, 0.04)
```
其中,第一个参数是灰度图像,第二个参数是窗口大小,第三个参数是Sobel算子的大小,第四个参数是Harris算法的自由参数,通常取0.04-0.06。
4. 对图像进行膨胀操作,以便更好地显示角点
```python
dst = cv2.dilate(dst, None)
```
5. 通过设置一个阈值来筛选出角点,并将它们标记在图像上
```python
img[dst > 0.01 * dst.max()] = [0, 0, 255]
cv2.imshow('Harris Corners', img)
cv2.waitKey(0)
```
其中,阈值可以根据实际情况调整,这里设置为0.01*dst.max()。
完整的代码如下:
```python
import cv2
import numpy as np
img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
dst = cv2.cornerHarris(gray, 2, 3, 0.04)
dst = cv2.dilate(dst, None)
img[dst > 0.01 * dst.max()] = [0, 0, 255]
cv2.imshow('Harris Corners', img)
cv2.waitKey(0)
```
运行代码后,可以看到图像中的角点已经被标记出来了。
阅读全文