Python中OpenCV图像特征和Harris角点检测

概念

95E53ABD-C862-F736-53BF-04195C50D7BF.png

188D6CC0-E49B-577B-F820-4FCE44461F45.png

8BA97513-803C-C4FC-A667-7B624F21EE47.png

F2C5A21F-747A-EAF9-6C49-1DF1084E5710.png

第一步:计算一个梯度 Ix,Iy

22CACE43-FFDD-76E1-39E6-111E7D23B325.png

6555E074-42B8-382A-446A-8BF3F78DF344.png

9957E302-1574-69EF-0B28-C1A306D15CB4.png

第二步:整合矩阵,计算特征值

C27EBCA8-1479-811C-8098-D918BA2541EF.png

第三步:比较特征值的大小

7B64C230-5EA0-F302-3388-893E8E6ABAF8.png

43F4DCAC-1846-A700-1393-9D0AB43C18A5.png

第四步: 非极大值抑制,把真正的角点留下来,角点周围的过滤掉
代码实现

302EB207-5964-CDB0-9566-3D1DEF9C1A1C.png

import cv2
import numpy as np

img =cv2.imread('pie.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)

1A80FCA8-B9B1-794C-2D6A-A0D479ABC1ED.png

img[dst>0.01*dst.max()]=[0,0,255]
cv2.imshow('dst',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

DD6B98E1-BFE3-2F7C-53C7-C361C707E6E1.png

2B6AE4FE-4A71-C893-EC3A-FF2D434D3F9E.png

55112141-B1CE-7F8B-C806-7139A064C1DA.png

BAC01627-5EC4-A5FD-BCBF-1F1FD1CFE275.png

3F3CE61A-1A08-A86D-90C0-1C1B66252D2F.png

收藏 (0)
评论列表
正在载入评论列表...
我是有底线的
为您推荐
    暂时没有数据