我正在使用训练好的OpenCV级联分类器在视频帧中检测手部,并想降低误报率。在网上查阅资料时,我看到可以通过访问detectMultiScale方法返回的
如果可能,正确的语法是什么?如果您成功了,请提及您正在使用的OpenCV版本。我使用的是2.4.9版本。 2.4.11 API 给出以下语法。
rejectLevels
和levelWeights
信息来实现。我在这里看到,C++中可以实现这一点,我的问题是:有人成功在Python中实现了吗?一个类似的问题被问到这里,但是那是早期版本的检测方法。如果可能,正确的语法是什么?如果您成功了,请提及您正在使用的OpenCV版本。我使用的是2.4.9版本。 2.4.11 API 给出以下语法。
Python: cv2.CascadeClassifier.detectMultiScale(image, rejectLevels, levelWeights[, scaleFactor[, minNeighbors[, flags[, minSize[, maxSize[, outputRejectLevels]]]]]])
因此,我尝试过
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)
但我得到的输出是
[[259 101 43 43]
[354 217 43 43]
[240 189 43 43]
[316 182 47 47]
[277 139 92 92]]
[]
[]
感谢您的帮助,
Ronen
weights
是一个二维数组,所以confidence = weights[i, 0]
。 - mins