zoukankan      html  css  js  c++  java
  • Python中 opencv(cv2) SIFT与MSER的使用

    SIFT:(注意,现仅个别opencv版本支持开源免费的SIFT、SURF算法函数,如3.4.2)

    import cv2
    import numpy as np
     
     
    img = cv2.imread('xxx.jpg')
    gray= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    sift = cv2.xfeatures2d.SIFT_create()
     
     
    kp = sift.detect(gray,None)#找到关键点
     
    img=cv2.drawKeypoints(gray,kp,img)#绘制关键点
     
    cv2.imshow('sp',img)
    cv2.waitKey(0)

     返回的关键点是一个带有很多不用属性的特殊结构体,属性当中有坐标,方向、角度等等。

    计算关键点描述符:

    使用sift.compute()函数来进行计算关键点描述符

    kp,des = sift.compute(gray,kp)

    如果未找到关键点,可使用函数sift.detectAndCompute()直接找到关键点并计算。

    在第二个函数中,kp为关键点列表,des为numpy的数组,为关键点数目×128

    sift = cv2.xfeatures2d.SIFT_create()
     
    kp, des = sift.detectAndCompute(gray,None)

    MSER:

    import cv2
     
    img = cv2.imread('xxx.jpg')
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
     
    mser = cv2.MSER_create()
    regions, boxes = mser.detectRegions(gray)
     
    for box in boxes:
        x, y, w, h = box
        cv2.rectangle(img, (x,y),(x+w, y+h), (255, 0, 0), 2)
     
    cv2.imshow('sp',img)
    cv2.waitKey(0)
  • 相关阅读:
    2021 Duilib最新入门教程(二)Duilib编译动态库
    2021 Duilib最新入门教程(一)Duilib简介
    webgl图库选型
    CUDA编程学习记录
    C++时间戳获取
    FFMPEG编译问题记录
    程序员的35岁
    Linux发行版及其目标用户
    服务器关机或重启
    Linux下找出吃内存的方法总结
  • 原文地址:https://www.cnblogs.com/SakuraYuki/p/13341480.html
Copyright © 2011-2022 走看看