首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SURF要素训练k-NN时出错

使用SURF要素训练k-NN时出错
EN

Stack Overflow用户
提问于 2017-10-23 00:19:17
回答 1查看 150关注 0票数 0

我正在尝试基于输入图像检索一组相似的图像。我用序列来设置数组元素。使用序列设置数组元素。顺便说一句,PythonOpenCV。我的策略是获取图像数据库的SURF特征,然后将其放入k-NN模型中,这样每当我使用SURF特征查询图像并查找相似的项集时,我就可以使用k-NN获得最近的邻居。问题是,我尝试在scikit-learn中训练k-NN模型,方法是放置SURF描述符,然后将其扁平化。然而,每当我尝试训练模型时,这个错误就一直出现。setting an array element with a sequence.setting an array element with a sequence.

我做错了什么?我应该如何表示要素,以便可以在k-NN中使用它

更新:以下是我的代码

代码语言:javascript
复制
SURFObject = cv2.SURF(hessianThreshold = 400, extended = 0)
image_names = []
image_descriptors = []
for i in range(1, 4001):
    print("Image Number: " + str(i))
    filename = 'cat.'+ str(i) +'.jpg'
    img = cv2.imread(filepath + filename)
    keypoints, descriptors = SURFObject.detectAndCompute(img, None)
    image_descriptors.append(descriptors.tolist())
    image_names.append(filename)

neighbors = NearestNeighbors(10, 0.5)
neighbors.fit(np.array(image_descriptors).reshape(-1,1))
EN

回答 1

Stack Overflow用户

发布于 2017-10-23 18:01:10

我不能完全确定您收到的错误消息,但可以肯定的是,您在描述符维度方面有问题。

Surf首先为图像找到关键点,然后为每个关键点生成固定大小的描述符。问题是,对于每个图像,您将获得不同数量的关键点,然后当您执行"descriptors.tolist()“时,它将连接此关键点的所有描述符,但您将为每个图像获得不同的大小

尝试阅读有关词袋或更好的fisher向量来处理这类问题

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46876388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档