hellou

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

  1. Harris 角点检测算法:

    • 优点:简单、快速,对旋转和尺度变化具有一定的鲁棒性。
    • 缺点:对于强烈变换的图像(如平移和仿射变换)不太鲁棒。
  2. Shi-Tomasi 角点检测算法:

    • 优点:对于角点的定位更准确,比 Harris 角点检测算法更稳定。
    • 缺点:相对较慢,无法提供角点的角度信息。
  3. FAST 角点检测算法:

    • 优点:非常快速,适用于实时应用。
    • 缺点:对于噪声敏感,可能产生大量的假阳性。
  4. BRIEF 描述符配对算法:

    • 优点:快速,适用于实时应用。
    • 缺点:对于旋转和尺度变化敏感,对光照变化不鲁棒。
  5. ORB 描述符配对算法:

    • 优点:结合了 FAST 角点检测和 BRIEF 描述符,具有较好的性能。
    • 缺点:对于光照变化和尺度变化不够鲁棒。
  6. SIFT 角点检测和描述符配对算法:

    • 优点:对于光照变化、旋转和尺度变化具有很高的鲁棒性。
    • 缺点:相对较慢,可能受到专利限制。
  7. SURF 角点检测和描述符配对算法:

    • 优点:对于光照变化、旋转和尺度变化具有较高的鲁棒性。
    • 缺点:相对较慢,可能受到专利限制。
  8. KAZE 角点检测和描述符配对算法:

    • 优点:对于光照变化、旋转和尺度变化具有较高的鲁棒性。
    • 缺点:相对较慢。

posted on 2023-06-25 17:11  云上u  阅读(20)  评论(0编辑  收藏  举报

导航