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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM