• 图像角点特征检测-opencv、python


    介绍一位我们的老朋友Lena(截图只有1/4,this picture contains nudity http://www.lenna.org/):

    import cv2
    import matplotlib.pyplot as plt
    
    # opencv图像格式为BGR,历史原因,用cv2.cvtColor转成rgb
    lena_bgr = cv2.imread('img/lena_full.jpg')
    lena_rgb= cv2.cvtColor(lena_bgr, cv2.COLOR_BGR2RGB)
    
    plt.figure(figsize=(6, 6))
    # 等同于 plt.subplot(1,2,1)
    plt.subplot(121)
    plt.imshow(lena_bgr)
    plt.subplot(122)
    plt.imshow(lena_rgb)
    plt.show()
    

    角点是图像的一个很大的特征,角点检测是图像识别的一项基本内容,目标识别、运行检测、图像匹配、视频追踪等等都会用到。检测方法如harris、shi-tomas(前者的改进)。
    展示Harris,借助cv2.cornerHarris,它只能处理灰度图像:

    import cv2
    import matplotlib.pyplot as plt
    
    lena_bgr = cv2.imread('img/lena.jpg')
    lena_gray= cv2.cvtColor(lena_bgr, cv2.COLOR_BGR2GRAY)
    
    # 图像,像素领域大小blockSize,孔径参数ksize,自由参数k
    corners = cv2.cornerHarris(lena_gray, 2, 3, 0.04)
    
    plt.imshow(corners, cmap='gray')
    plt.show()
    

    SIFT

    scale-invariant feature transform尺度不变特征变换,不受方向和尺度的变化影响。先检测关键点,在计算关键点的特征值。SIFT目前受法律保护,一移到了opencv-contri

    import cv2
    import matplotlib.pyplot as plt
    import numpy as np
    
    lena_bgr = cv2.imread('img/lena.jpg')
    lena_rgb = cv2.cvtColor(lena_bgr, cv2.COLOR_RGB2BGR)
    
    # 由于版本和专利问题,这行内容不一定成功
    sift = cv2.SIFT_create()
    # kp关键点,des特征描述
    kp, des = sift.detectAndCompute(lena_rgb, None)
    
    # 一个图像大小的0数组
    lena_kp = np.zeros_like(lena_rgb)
    # flag给角点画圆圈标记
    cv2.drawKeypoints(lena_rgb, kp, lena_kp, flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
    plt.imshow(lena_kp)
    plt.show()
    
    print(len(kp))
    print(type(kp))
    print(des.shape)
    

    kp长度、kp类型、des维度:

    259
    <class 'list'>
    (259, 128)
    

    SUFT

    speeded up rebust features加速健壮特征,比SIFT快。SIFT和SUFT受法律保护,移入到opencv_contrib中。

  • 相关阅读:
    c语言字符串_续
    c语言中文件的操作
    Linux基础知识
    netstat
    wireshark 过滤规则
    常用cmd命令
    优化过的redis封装类
    二十三岁,新的起点
    计划看的书目
    [转载]爱上一个给予你正能量的人
  • 原文地址:https://www.cnblogs.com/foxer-z/p/14484824.html
Copyright © 2020-2023  润新知