OpenCV Python绑定中的特征检测

2024-04-28 15:18:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经梳理了整个网络,寻找一种方法来获得OpenCV 2.3.1a的特征提取/描述符绑定,以吐出任何风格的图像特征/描述符(STAR/SURF/ORB/SIFT/FAST)。我很清楚OpenCV有一个叫做“goodFeaturesToTrack”的方法。这对我没有帮助,因为没有特性描述符(这是我真正需要的)。我遵循了此处列出的文档:

http://opencv.itseez.com/modules/features2d/doc/feature_detection_and_description.html

似乎什么都没用。我尝试过所有类型的描述符/特性。我试过使用单声道和多声道图像(即彩色和黑白)以及多种图像格式(8bit和32f)。我使用了当前的发行版并从源repo构建绑定。大多数方法都会导致“未知不是numpy数组”错误。下面是一个例子:

SimpleCV:1>import cv2
SimpleCV:2>img = Image("aerospace.jpg")
SimpleCV:3>bwimg = img._getGrayscaleBitmap()
SimpleCV:4>bwimg
SimpleCV:4><iplimage(nChannels=1 width=600 height=400 widthStep=600 )>
SimpleCV:5>surfer = cv2.SURF(0.5,4,2,False,False)
SimpleCV:6>points = surfer.detect(bwimg,None)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)

/Library/Python/2.6/site-packages/SimpleCV-1.2-py2.6.egg/SimpleCV/Shell/Shell.pyc in <module>()
-

TypeError: <unknown> is not a numpy array
SimpleCV:7>

值得注意的是,我正在使用SimpleCV加载图像,但是方法_getGrayscaleBitmap()返回OpenCV使用的灰色8bit IPL图像。我确信这是有效的,因为我使用它与其他100个OpenCV方法没有关联。

所以有人能给我指一个在网上运行的例子吗。我梳理了几十个例子,没有发现任何有用的东西。


Tags: 方法图像numpyfalseimg特性cv2opencv
2条回答

看起来你有一个皮尔的形象。尝试转换为numpy图像: npImage=np.数组(img)

凯特,这对我有用:

s = cv2.SURF()
mask = uint8(ones(gray.shape))
keypoints = s.detect(gray,mask)

我能画出关键点。你可以试试这个

k,d = s.detect(gray,mask,False)
d = d.reshape((-1,128))
print d.shape, len(k)

在关键点列表中,d的长度应该相同。

我在OpenCV一章中有一个例子: http://www.maths.lth.se/matematiklth/personal/solem/book.html

相关问题 更多 >