Używam wyszkolonego klasyfikatora kaskadowego opencv do wykrywania rąk w klatkach wideo i chciałbym obniżyć moją fałszywą pozytywną stawkę. Czytanie w sieci, widziałem, że możesz to zrobić, uzyskując dostęp do informacji zwracanych przez metodę detectMultiScale. Widziałem here, że jest to możliwe w C++, moje pytanie brzmi - czy ktokolwiek zdołał to zrobić w Pythonie? Podobne pytanie zostało zadane here, ale dotyczyło to wcześniejszej wersji metody wykrywania.Uzyskanie poziomu pewności detektora MULTiscale w OpenCV za pomocą Pythona?
Jeśli jest to możliwe, jaka jest właściwa składnia, aby wywołać metodę? Jeśli to zadziałało, podaj wersję OpenCV, z której korzystasz. Jestem na 2.4.9.
2.4.11 API daje następującą składnię
Python: cv2.CascadeClassifier.detectMultiScale(image, rejectLevels, levelWeights[, scaleFactor[, minNeighbors[, flags[, minSize[, maxSize[, outputRejectLevels]]]]]])
więc odpowiednio, próbowałem
import 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)
Ale wyjście mogę to
[[259 101 43 43]
[354 217 43 43]
[240 189 43 43]
[316 182 47 47]
[277 139 92 92]]
[]
[]
Dzięki za pomoc,
Ronen
detectMultiScale3 nie działa dla mnie. detectMultiScale2 zwraca intensywności (lub zaufanie) jako drugi var. – thecheech