0
我有一個利用OpenCV設置python的CBIR系統。我已經成功地提取了關鍵點和描述符,使用k-means對它們進行聚類以創建碼本,並生成了基於此碼本描述圖像的直方圖。我想知道如何使用這段代碼最後一行生成的直方圖來訓練SVM,或者如果我以錯誤的方式解決這個問題。如何初始化和訓練python中的rootSIFT特性的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)