Ich versuche, einige Bilder zu klassifizieren, indem sie SIFT für erfassen und berechnen keypoints und Deskriptoren, und dann KNN verwenden für klassifizieren:Python. K-Nächster-Nachbar-Typeerror: Proben-Datentyp = 17 nicht
Das ist mein wenig Code:
import os
import cv2
## Prepare images files
rootpath = '/Some/Directory'
files = []
for filedir, dirs, filess in os.walk(rootpath):
for filename in filess:
pathfile = os.path.join(filedir, filename)
files.append(pathfile)
## Detect keypoints and compute descriptors for train images
kp_train = []
dsc_train = []
for file in files:
ima = cv2.imread(file)
gray=cv2.cvtColor(ima,cv2.COLOR_BGR2GRAY)
kpts, des = sift.detectAndCompute(gray, None)
kp_train.append(kpts)
dsc_train.append(des)
## Train knn
dsc_train = np.array(dsc_train)
responses = np.arange(len(kp_train),dtype = np.float32)
knn = cv2.ml.KNearest_create()
knn.train(dsc_train, cv2.ml.ROW_SAMPLE, responses)
Aber ich bin ein wenig hängen mit dem nächsten Fehler
>>> knn.train(dsc_train,cv2.ml.ROW_SAMPLE,responses)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: dsc_train data type = 17 is not supported
Dateien ist eine Liste mit 10 Bildern, so dass die Schleife erfasst und berechnet ke Ypoints und Deskriptor für jedes Bild. Ich gebe Ihnen einige images.Thanks
Können Sie einen reduzierten Satz von Beispieldaten mit einbeziehen, um drei Bilder zu demonstrieren? – tfv
Sie können eine schnellere Antwort erhalten, wenn der Code vollständig ist (einschließlich Importanweisungen, Dateinamen usw.) und Daten verfügbar sind, damit wir sie reproduzieren können. – tfv
@tfv Ich habe den Beitrag bearbeitet. Prüfen Sie. Danke für die Ratschläge – Jose