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)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章