sift特征提取例程

例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# -×- coding:utf-8 -×-
import cv2
import numpy as np
# read image
img = cv2.imread('test.png')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2.imshow('origin',img)
# SIFT
detector = cv2.xfeatures2d.SIFT_create()
keypoints = detector.detect(gray,None)
print type(keypoints)
print len(keypoints)
print type(keypoints[0])
print keypoints[0]
print dir(keypoints[0])
print keypoints[0].angle
print keypoints[0].class_id
print keypoints[0].octave
print keypoints[0].pt
print keypoints[0].response
print keypoints[0].size
img = cv2.drawKeypoints(gray,keypoints,img)
cv2.imshow('test',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

充分利用help函数

利用help函数和vim的搜索功能

1
2
help(cv2)
help(cv2.ml)

或者进一步,这样使用。

1
2
3
>>> import cv2
>>> ann = cv2.ml.ANN_MLP_create()
>>> help(ann)

关于OpenCV-Python读取xml的问题

OpenCV中有一个FileStorage的组件可以将一些对象保存为xml或yaml的文件。
但OpenCV-Python中并没有提供相关的接口。
问题可能在于OpenCV保存的XML和YAML文件与Python的读取库并不兼容。

在2.4版本的OpenCV-Python中可能可以利用 cv2.cv.load() 的方式。
在3.1版本中OpenCV-Python中,cv模块已经被移除,并且我在help(cv),help(cv.ml)等也未找到load函数。

http://stackoverflow.com/questions/11141336/filestorage-for-opencv-python-api?lq=1