【发布时间】:2016-11-16 08:05:22
【问题描述】:
我使用 OpenCV 在 python 中设置了一个 CBIR 系统。我已成功提取关键点和描述符,使用 k-means 对它们进行聚类以创建码本,并根据此码本生成描述图像的直方图。我想知道如何使用此代码最后一行生成的这些直方图来训练 SVM,或者我是否以错误的方式进行此操作。
import argparse
import glob
import cv2
import numpy
import pickle
import base64
from scipy.cluster.vq import *
from cassandra.cluster import Cluster
def compute(imagePath, eps=1e-7)
sift = cv2.xfeatures2d.SIFT_create()
image = cv2.imread(imagePath, 0)
kp, des = sift.detectAndCompute(image, None)
if des is not None:
kp, des = sift.compute(image, kp)
if len(kp) == 0:
return ([], None)
des /= (des.sum(axis=1, keepdims=True) + eps)
des = numpy.sqrt(des)
des = whiten(des)
return kp, des
for imagePath in dataset :
kp,des = compute(imagePath)
codes, distortion = vq(des, codebook)
hist, bins = numpy.histogram(codes, K)
【问题讨论】:
标签: python opencv computer-vision scikit-learn