目录
一、提前准备
1、树莓派4B 及 64位系统
2、提前安装opencv库 以及 numpy库
3、保存一张图片
二、代码详解
python
import cv2
img = cv2.imread('jihe.jpg')
# 角点检测需要转换为灰度图
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 角点检测
dst = cv2.cornerHarris(img_gray, 4, 3, 0.04)
# 每个点得到的结果值大于最大角点值的0.01倍,即认为该点为角点,并用[0, 0, 255]红色绘制出
img[dst > 0.01 * dst.max()] = [0, 0, 255]
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
:
这个函数用于转换图像的颜色空间。在这里,它将原始图像(通常是BGR格式)转换为灰度图。灰度图只有一个颜色通道,这在许多图像处理任务中是必要的,因为它们不需要处理颜色信息。
cv2.cornerHarris(img_gray, 4, 3, 0.04)
:
这是Harris角点检测算法的实现。它接受四个参数:
img_gray
:输入的灰度图像。
0.04
:Harris检测器的自由参数,用于调整角点响应函数的灵敏度。这个函数会返回一个与输入图像大小相同的响应图,图中的每个像素值表示该位置成为角点的可能性。
3
:Sobel算子的孔径大小,用于计算图像的梯度。
4
:角点检测的区块大小,即每个角点周围的邻域大小。
img[dst > 0.01 * dst.max()] = [0, 0, 255]
:
这行代码是在响应图dst
上进行阈值操作,以确定角点的位置。它将响应图中大于其最大值的0.01倍的像素点设置为红色(BGR格式中的[0, 0, 255])。
这意味着只有响应值足够高的点才会被认为是角点,并在原始图像上用红色标记。
三、运行现象
四、完整工程贴出
持续更新中......