opencv图像处理——图像特征-harris角点检测

目录

 角点

基本原理

角点检测


 角点

角点:沿水平和竖直方向滑动,灰度变化都很明显的区域。

基本原理

 如同下图所示,一个是平坦区域,一个是边缘。一个是角点,设置一个滑动窗口,无论朝那个方向移动,对应位置上的亮度都会有很大变化,

 

 R值趋近于0,说明是平面区域

           小于0,是边界

           大于0,是角点

α的值增大,R值减小,降低角点检测的灵敏性,减少被检测角点的数量;

α值减小,R值增大,增加角点检测的灵敏性,增加被检测角点的数量。 

角点检测

 cv2.cornerHarris()

  1. img:数据类型为float32的入图像
  2. blockSize:角点检测中指定区域的大小
  3. ksize:Sobel求导中使用的窗口大小,一般为3
  4. k:取值参数为【0.04,0.06】,默认0.04

 完整代码

import cv2
import numpy as np

img=cv2.imread('E:/OpenCV/image/1.png')
print('img.shape:',img.shape)
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#gray=np.float32(gray)
dst=cv2.cornerHarris(gray,2,3,0.04)#某个位置的自相似程度(变化程度)
print('dst.shape:',dst.shape)

img[dst>0.01*dst.max()]=[0,0,255]#不设固定值,一般与最大值相比,最大值肯定是角点,若大于此值,则认为该位置是角点,画出它,用红色画出
cv2.imshow('dst',img)
cv2.waitKey(0)
cv2.destoryAllWindows()

猜你喜欢

转载自blog.csdn.net/weixin_58176527/article/details/125323145