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)

 

posted @ 2020-02-03 11:04  龙雪  阅读(1844)  评论(0编辑  收藏  举报