繁体   English   中英

Python Bag of Words聚类

[英]Python Bag of Words clustering

编辑:以下是任何有问题的人的完整代码github.com

我正在尝试使用SIFT和BOW进行图像识别项目。 到目前为止,我正在努力训练和建立我的字典。 我已经读过5个不同类的图像,计算描述符并将它们全部添加到python列表([])中。 现在,我正在尝试使用python版本的BOWMeansTrainer来将我的描述符聚类为k = 5(对于5个类,这是正确的吗?)。 我正在尝试传递cluster()我的描述符向量,但我收到了错误

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数组的格式是什么,有没有人有想法?

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数组(所需的格式)。

刚刚想通了opencv论坛,而不是使用另一个列表(我使用上面的描述符),只需将你直接找到的描述符添加到你的包中,使用bow.add(dsc)

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()

编辑:对于其他任何有问题的人我已经在这里上传了其余的脚本

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM