我正在尝试使用opencv在python中编写简单的面部检测。但不幸的是我的opencv拒绝检测我的网络摄像头。我不确定它在内部如何工作,因为文档非常有限,但CaptureFromCAM(-1)返回一些对象,但QueryFrame返回nones。当我尝试在奶酪中使用我的两个摄像头中的一个时,我会毫无问题地获得视频。
capture = cv.CaptureFromCAM(-1)
faceCascade = cv.Load("haarcascade_frontalface_alt.xml")
while (cv.WaitKey(15)==-1):
img = cv.QueryFrame(capture)
if img != None:
image = DetectFace(img, faceCascade)
cv.ShowImage("face detection test", image)
cv.ReleaseCapture(capture)
有什么想法吗?
答案 0 :(得分:2)
好的,我已经弄清楚了。基本上我的openvc是用v4l(video for linux)支持编译的。
解决此问题时,您首先需要确保您的相机正在使用v4l与其他应用程序一起使用。如果是这种情况,那么您可以尝试使用v4l支持重新编译openvc。对于gentoo(使用portage),它非常简单:
sudo su
USE="v4l v4l2" emerge -av opencv
对于其他包管理器要么想出来,要么使用USE_V4L = ON来源编译。