Ich habe ein CBIR-System in Python mit OpenCV eingerichtet. Ich habe die Schlüsselpunkte und Deskriptoren erfolgreich extrahiert, sie unter Verwendung von k-means gruppiert, um ein Codebuch zu erzeugen, und habe Histogramme erzeugt, die Bilder basierend auf diesem Codebuch beschreiben. Ich würde gerne wissen, wie ich diese Histogramme verwenden kann, die in der letzten Zeile dieses Codes erzeugt werden, um eine SVM zu trainieren, oder wenn ich das falsch mache.Wie man eine SVM mit rootSIFT-Funktionen in Python initialisiert und trainiert
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)