目录
1 涉及的OpenCV函数
2 实践
在图像中每个方向变化都很大的区域就是角点,一个早期的尝试是由 Chris Harris & Mike Stephens 在1998年的论文 A Combined Corner and Edge Detector 完成的。所以现在称之为 Harris角点检测。
1 涉及的OpenCV函数
-
cornerHarris()函数
cv2.cornerHarris( src, blockSize, ksize, k[, dst[, borderType]] ) -> dst
①src,输入图像且需要为单通道8位或者浮点型图像.
②blockSize,表示邻域的大小.
③ksize,sobel算子的直径.
④k,Harris参数.
⑤borderType,图像像素的边界模式。
⑥dst,用于存放Harris角点检测的输出结果.
2 实践
- 代码
import cv2
import matplotlib.pyplot as plt
import numpy as np
def dealImg(img):
b, g, r = cv2.split(img)
img_rgb = cv2.merge([r, g, b])
return img_rgb
def dealImageResult(img_path):
img = cv2.imread(img_path)
print(img.shape)
img_copy = img.copy()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
gray = gray.astype(np.float32)
dst = cv2.cornerHarris(gray, 5, 3, 0.04)
img_copy[dst > 0.01 * dst.max()] = [0, 255, 0]
fig = plt.figure(figsize=(8, 8))
titles = ["img", "harris"]
img = dealImg(img)
img_copy = dealImg(img_copy)
images = [img, img_copy]
for i in range(2):
plt.subplot(1, 2, i + 1), plt.imshow(images[i], 'gray')
plt.title(titles[i])
plt.xticks([]), plt.yticks([])
plt.show()
fig.savefig('test_results.jpg', bbox_inches='tight')
if __name__ == '__main__':
dealImageResult("harris.jpg")
pass
- 效果图
- 代码
import cv2
import numpy as np
img = cv2.imread('harris.jpg')
img_copy = img.copy()
gray = cv2.cvtColor(img_copy, cv2.COLOR_BGR2GRAY)
gray = gray.astype(np.float32)
dst = cv2.cornerHarris(gray, 5, 3, 0.04)
img_copy[dst > 0.01 * dst.max()] = [0, 255, 0]
images = np.concatenate((img, img_copy), axis=1)
cv2.imwrite('Harris_detect.jpg', images)
pass
- 效果图
前文回顾
入门篇目录
数字图像处理(入门篇)一 图像的数字化与表示
数字图像处理(入门篇)二 颜色空间
数字图像处理(入门篇)三 灰度化
数字图像处理(入门篇)四 像素关系
数字图像处理(入门篇)五 图像数据预处理之颜色空间转换
数字图像处理(入门篇)六 图像数据预处理之坐标变化
数字图像处理(入门篇)七 图像数据预处理之灰度变化
数字图像处理(入门篇)八 图像数据预处理之直方图
数字图像处理(入门篇)九 图像数据预处理之滤波
数字图像处理(入门篇)十 边缘检测
数字图像处理(入门篇)十一 形态学处理
数字图像处理(入门篇)十二 自适应阈值分割
数字图像处理(入门篇)十三 仿射变换
数字图像处理(入门篇)十四 透视变换
实践篇目录
数字图像处理(实践篇)一 将图像中的指定目标用bBox框起来吧!
数字图像处理(实践篇)二 画出图像中目标的轮廓
数字图像处理(实践篇)三 将两张图像按照指定比例融合
数字图像处理(实践篇)四 图像拼接-基于SIFT特征点和RANSAC方法
数字图像处理(实践篇)五 使用Grabcut算法进行物体分割
数字图像处理(实践篇)六 利用hough变换进行直线检测
数字图像处理(实践篇)七 利用霍夫变换进行圆环检测