我正在使用训练有素的opencv级联分类器来检测视频帧中的手,并希望降低我的误报率.在网上读了起来,我看见你可以通过访问这样做
rejectLevels
,并levelWeights
通过detectMultiScale方法返回的信息.我在这里看到这在C++中是可能的,我的问题是 - 有没有人设法用Python做到这一点?这里也提出了一个类似的问题,但它是针对早期版本的检测方法.
如果可能,调用该方法的正确语法是什么?如果它适合您,请提及您正在使用的OpenCV版本.我在2.4.9.
2.4.11 API提供以下语法
Python: cv2.CascadeClassifier.detectMultiScale(image, rejectLevels, levelWeights[, scaleFactor[, minNeighbors[, flags[, minSize[, maxSize[, outputRejectLevels]]]]]])
Run Code Online (Sandbox Code Playgroud)
因此,我已经尝试过了
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)
Run Code Online (Sandbox Code Playgroud)
但我得到的输出是
[[259 101 43 43]
[354 217 43 43]
[240 189 43 43]
[316 182 47 47]
[277 139 92 92]]
[]
[] …
Run Code Online (Sandbox Code Playgroud) 有什么区别
std::wcout << "some text" ;
Run Code Online (Sandbox Code Playgroud)
和
std::wcout <<L "some text";
Run Code Online (Sandbox Code Playgroud)
?
我找不到有关L
用途的信息.