【opencv学习】【Harris角点检测】

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
下面看代码:

import cv2
import numpy as np

# 1.cv2.cornerHarris(img, blocksize, kszie, k)  # 找出图像中的角点
# 参数说明:
# img:是数据类型为float32的输入图像,表示输入的灰度图,
# blocksize:我们检测过程中需要一个窗口,这个就是窗口的大小,W(x,y)
# kszie:运用Sobel算子求解每个像素的梯度。有Ix和Iy方向的。
# k:是角点响应值运算中的α数值,一般推荐是[0.06, 0.06]

# 进行角点检测
# 第一步:读取图片
img = cv2.imread('images/build.jpeg')
img_src = img.copy()

# 第二步:进行灰度化
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
print(gray.shape)

# 第三步:进行角点检测
dst = cv2.cornerHarris(gray, 2, 3, 0.035)
print(dst.shape)  # 和 gray.shape 是一样的,因为是计算了每个像素点的R值

# 第四步:进行画图秒点操作
# 取其中自相似度大于某个阈值的,由于图像差异很大,一般都是取最大值来做相对的比较
# 符合阈值的就改成 红色的像素
img[dst > 0.01 * dst.max()] = (0, 0, 255)

res = np.hstack((img_src, img))
cv2.imshow('img', res)
cv2.waitKey(0)
cv2.destroyAllWindows()

效果如下:
请添加图片描述

猜你喜欢

转载自blog.csdn.net/qq_29367075/article/details/123012724