Python 词袋聚类
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)
如您所见,我一直在附加筛选描述符,然后尝试转换为 numpy 数组(所需格式)。
多亏了 opencv 论坛才弄明白,而不是使用另一个列表(我在上面使用了描述符),只需使用 bow.add(dsc)[=12= 将你找到的描述符直接添加到你的包中]
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()
编辑:对于遇到问题的其他人,我已经上传了脚本的其余部分 here
编辑:这是为仍然有问题的任何人提供的完整代码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)
如您所见,我一直在附加筛选描述符,然后尝试转换为 numpy 数组(所需格式)。
多亏了 opencv 论坛才弄明白,而不是使用另一个列表(我在上面使用了描述符),只需使用 bow.add(dsc)[=12= 将你找到的描述符直接添加到你的包中]
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()
编辑:对于遇到问题的其他人,我已经上传了脚本的其余部分 here