opencv中Harris角点检测

cv2.cornerHarris()函数

cv2.cornerHarris(src, blockSize, ksize, k, dst=None, borderType=None)

src:数据类型为 float32 的输入图像
blockSize:角点检测中考虑的区域大小
ksize:Sobel求导中使用的窗口大小
k:Harris 角点检测方程中的自由参数,取值参数为 [0.04 0.06]
dst:输出图像
borderType:边界的类型

import cv2 
import numpy as np

img = cv2.imread('test_1.jpg')
print ('img.shape:',img.shape)#img.shape: (800, 1200, 3)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
gray = np.float32(gray)
#cv2.cornerHarris()函数的返回值其实就是R值构成的灰度图像,灰度图像坐标会与原图像对应  
#R值就是角点分数,当R值很大的时候就可以认为这个点是一个角点,所以可以通过选取值更大的点,来更精确的检测角点
dst = cv2.cornerHarris(gray, 2, 3, 0.04)
print ('dst.shape:',dst.shape)#dst.shape: (800, 1200)
img[dst>0.01*dst.max()]=[0,0,255]
cv2.imshow('dst',img) 
cv2.waitKey(0) 
cv2.destroyAllWindows()

在这里插入图片描述

发布了27 篇原创文章 · 获赞 20 · 访问量 1543

猜你喜欢

转载自blog.csdn.net/qq_39507748/article/details/104599817