首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python包词聚类

Python包词聚类
EN

Stack Overflow用户
提问于 2015-11-14 22:04:05
回答 1查看 9.3K关注 0票数 8

编辑:这是所有有问题的人仍然是github.com的完整代码

我试着用SIFT和蝴蝶结做一个图像识别项目。到目前为止,我正努力训练和制作我的字典。我阅读了来自5个不同类的图像,计算描述符并将它们并排添加到python列表([])中。现在,我正在尝试使用python版本的BOWMeansTrainer将我的描述符集群到k=5(这是正确的吗?5节课?)我试图传递我的描述符向量,但是我得到了错误

代码语言:javascript
复制
Traceback (most recent call last):


File "C:\Python27\Project2\beginning.py", line 40, in <module>
    bow.cluster(des)
TypeError: descriptors data type = 17 is not supported

我不确定我的numpy数组的格式是什么,有人有主意吗?

代码语言:javascript
复制
sift = cv2.SIFT()

descriptors = []
for path in training_paths:
    image = cv2.imread(path)
    print path
    gray = cv2.cvtColor(image, cv2.CV_LOAD_IMAGE_GRAYSCALE)
    kp, dsc= sift.detectAndCompute(gray, None)
    descriptors.append(dsc)

des = np.array(descriptors)

k=5
bow = cv2.BOWKMeansTrainer(k)
bow.cluster(des)

如您所见,我一直在附加sift描述符,然后尝试转换为numpy数组(所需的格式)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-15 06:10:46

感谢opencv论坛,而不是使用另一个列表(我在上面使用了描述符),只需将您找到的描述符直接添加到您的bow.add包中即可。

代码语言:javascript
复制
dictionarySize = 5

BOW = cv2.BOWKMeansTrainer(dictionarySize)

for p in training_paths:
    image = cv2.imread(p)
    gray = cv2.cvtColor(image, cv2.CV_LOAD_IMAGE_GRAYSCALE)
    kp, dsc= sift.detectAndCompute(gray, None)
    BOW.add(dsc)

#dictionary created
dictionary = BOW.cluster()

编辑:对于其他有问题的人,我已经上传了剩下的脚本这里

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

https://stackoverflow.com/questions/33713939

复制
相关文章

相似问题

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