Ich verwende einen trainierten opencv Kaskadenklassifikator, um Hände in Videorahmen zu erkennen, und möchte meine falsche positive Rate senken. Lesen Sie im Internet, sah ich Sie können dies durch den Zugriff auf die rejectLevels
und levelWeights
Informationen, die von der Methode detectMultiScale zurückgegeben. Ich sah here, dass dies in C++ möglich ist, meine Frage ist - hat es jemand geschafft, es in Python zu tun? Eine ähnliche Frage wurde gestellt here, aber es war für eine frühere Version der Erkennungsmethode.Ermitteln der Vertrauensstufe von detectMultiscale in OpenCV mit Python?
Wenn es möglich ist, was ist die richtige Syntax, um die Methode aufzurufen? Wenn es für Sie funktioniert, erwähnen Sie bitte die von Ihnen verwendete OpenCV-Version. Ich bin am 2.4.9.
Die 2.4.11 API gibt die folgende Syntax
Python: cv2.CascadeClassifier.detectMultiScale(image, rejectLevels, levelWeights[, scaleFactor[, minNeighbors[, flags[, minSize[, maxSize[, outputRejectLevels]]]]]])
So dementsprechend habe ich
versuchtimport cv2
import cv2.cv as cv
import time
hand_cascade = cv2.CascadeClassifier('cascade.xml')
img = cv2.imread('test.jpg')
rejectLevels = []
levelWeights = []
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = hand_cascade.detectMultiScale(gray,rejectLevels,levelWeights, 1.1, 5,cv.CV_HAAR_FIND_BIGGEST_OBJECT,(30, 30),(100,100),True)
Aber der Ausgang ich erhalte, ist
[[259 101 43 43]
[354 217 43 43]
[240 189 43 43]
[316 182 47 47]
[277 139 92 92]]
[]
[]
Vielen Dank für die Hilfe,
Ronen
detectMultiScale3 hat nicht für mich funktioniert. detectMultiScale2 gibt Intensitäten (oder Konfidenz) als zweite Var zurück. – thecheech