python - 如何[使用 Python] 创建 SIFT 的描述符数据库?

标签 python opencv numpy svm sift

如何创建 SIFT 描述符(图像)数据库?我在 Pyhton 2.7 中使用 OpenCV,我的目的是在支持向量机上实现监督训练集。

到目前为止,这是我的代码,用于 1 张图片

import cv2
import numpy as np

img = cv2.imread('C:\Python27\.Clocktower1.jpg')
gray= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

sift = cv2.SIFT()
kp = sift.detect(gray,None)

img=cv2.drawKeypoints(gray,kp)

cv2.imwrite('sift_keypoints.jpg',img)

kp, des = sift.detectAndCompute(gray,None)

cv2.imshow('image',img)
k = cv2.waitKey(0)
if k == 27:        
    cv2.destroyAllWindows()
elif k == ord('s'): 
    cv2.destroyAllWindows()

a = np.arange(127*127).reshape(127, 127)
np.set_printoptions(edgeitems=127)

f = open('file.txt','w')
f.write('answer:'+str(des))
f.close()

我在保存包含 kypoint 向量的矩阵 des 时遇到了麻烦,而且我仍然不知道一个函数可以将算法自动化到每个周期超过 1 个图像。

谢谢你

编辑:

输出格式为:
answer:[[   5.    1.    0.    7.   14.    1.    3.    8.    2.    1.    0.    0.
     0.    3.   12.    8.    0.    7.   14.    3.    2.    4.    3.    1.
     1.    1.    6.    6.   17.    3.    0.    1.   29.   32.    4.   10.
    29.   77.   22.   14.   98.   31.    1.    0.    4.   41.   84.   76.
    13.   14.   38.   10.   59.  115.   53.   22.   16.    4.   21.   13.
    56.   90.   72.   31.   45.   19.    7.    3.   10.   89.   85.   46.
   115.   12.    2.    6.   16.   27.  115.  103.   55.    3.    4.   20.
   115.  101.   15.   29.  113.    8.   16.   40.   33.   53.   61.   47.
    65.   16.    0.    0.    5.   24.   90.   86.    8.    0.    8.   47.
    63.   33.   67.   51.    6.    1.   19.   64.   89.   73.   36.   18.
    21.    8.   60.  115.   31.   58.   11.    8.] ...
(other 128-numbers vectors)

为了限制我在输出中获得的关键点数量,我需要选择 n 个最佳描述符;有实现吗?

最佳答案

SIFT 可以采用一个参数来说明要保留的最佳特征的数量

当你实例化 SIFT 时,你应该这样做

筛选 = cv2.SIFT(n)

引用
http://docs.opencv.org/trunk/modules/nonfree/doc/feature_detection.html

关于python - 如何[使用 Python] 创建 SIFT 的描述符数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20388774/

相关文章:

python - 错误在 `/usr/bin/python' : double free or corruption (out): 0x00007f7c3c017260

python - 如何将 report_tensor_allocations_upon_oom 添加到 Keras 中的 RunOptions

c++ - 如何使用 OpenCV 加载图像(原始字节)?

python - 如何在 10 秒后结束循环中的循环?

python - 通过严格比较对函数进行向量化,以在 2D 数组中查找局部最小值和最大值

python - 沿轴的零垫阵列

Python脚本导出到.exe,包括一些excel和numpy计算

javascript - 从 JS 文件将 Chart.js 折线图添加到 Jinja2/Flask html 页面

opencv - openCV中的 Blob 检测效果很好,但是由于某些原因,它对于特定的图像失败

python - 将字符串/转换为\时出现 EOL 错误