import cv2
cam = cv2.VideoCapture(0)
s, img = cam.read()
winName = "Movement Indicator"
cv2.namedWindow(winName, cv2.CV_WINDOW_AUTOSIZE)
while s:
cv2.imshow( winName,img )
s, img = cam.read()
hc = cv2.CascadeClassifier("foo.xml") #xml file for detection
faces = hc.detectMultiScale(img)
for face in faces:
cv2.rectangle(
img, (face[0], face[1]), (face[0] + face[2], face[0] + face[3]),
(255, 0, 0), 3
)
key = cv2.waitKey(10)
if key == 27:
cv2.destroyWindow(winName)
break
问问题
3284 次
2 回答
0
这真的是你所有的代码吗?iirc,它只适用于灰度
尝试交易速度以获得准确性,并使用lbpcascade而不是haar
cv2.imwrite("myface.png", img[ face[1]:face[1]+face[3], face[0]:face[0]+face[2] ] ); 应该挽回颜面投资回报率
于 2013-10-16T19:12:36.237 回答
0
文档在这里:http ://docs.opencv.org/modules/objdetect/doc/cascade_classification.html
您可以尝试两件简单的事情来加速检测(均以降低准确性为代价):
- 您可以增加 scaleFactor,默认值为 1.1,您可以尝试 1.2 或 1.3,这意味着在多尺度扫描的每个尺度上,它都会将图像下采样一个更大的因子。
- 您可以设置一个相对较大的最小人脸尺寸,例如(64,64),这意味着它将停止搜索较小的人脸,从而节省时间。如果您或多或少知道场景中面部的大小,您还可以尝试最大面部大小。
于 2013-10-16T18:06:06.763 回答