opencv中Harris角点检测

谁说我不能喝 提交于 2020-03-02 00:19:01

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()

在这里插入图片描述

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!