opencv学习笔记(十二)
harris角点检测:
#角点检测 import cv2 import numpy as np """cv2.cornerHarris() img:数据类型为float32 bolckSize:角点检测中指定区域的大小 ksize:Sobel求导中使用的窗口大小,一般为3 K:取值参数为[0.04,0.06]""" img = cv2.imread('C:/Users/hellou/Desktop/house.jpg') 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]#若大于max值的1%就认为是角点,且用[0, 0, 255]表示,即用红色表示 cv2.imshow('dst',img) cv2.waitKey(0) cv2.destroyAllWindows() res = np.hstack((img,img)) cv2.imshow('res',res) cv2.waitKey(0) cv2.destroyAllWindows()
除了Harris角点检测,OpenCV还提供了其他一些角点检测算法,如Shi-Tomasi角点检测(cv2.goodFeaturesToTrack()
)和FAST角点检测(cv2.FastFeatureDetector_create()
)。
-
Harris 角点检测算法:
- 优点:简单、快速,对旋转和尺度变化具有一定的鲁棒性。
- 缺点:对于强烈变换的图像(如平移和仿射变换)不太鲁棒。
-
Shi-Tomasi 角点检测算法:
- 优点:对于角点的定位更准确,比 Harris 角点检测算法更稳定。
- 缺点:相对较慢,无法提供角点的角度信息。
-
FAST 角点检测算法:
- 优点:非常快速,适用于实时应用。
- 缺点:对于噪声敏感,可能产生大量的假阳性。
-
BRIEF 描述符配对算法:
- 优点:快速,适用于实时应用。
- 缺点:对于旋转和尺度变化敏感,对光照变化不鲁棒。
-
ORB 描述符配对算法:
- 优点:结合了 FAST 角点检测和 BRIEF 描述符,具有较好的性能。
- 缺点:对于光照变化和尺度变化不够鲁棒。
-
SIFT 角点检测和描述符配对算法:
- 优点:对于光照变化、旋转和尺度变化具有很高的鲁棒性。
- 缺点:相对较慢,可能受到专利限制。
-
SURF 角点检测和描述符配对算法:
- 优点:对于光照变化、旋转和尺度变化具有较高的鲁棒性。
- 缺点:相对较慢,可能受到专利限制。
-
KAZE 角点检测和描述符配对算法:
- 优点:对于光照变化、旋转和尺度变化具有较高的鲁棒性。
- 缺点:相对较慢。