2

我正在尝试使用 opencv 在 python 中编写简单的人脸检测。但不幸的是,我的 opencv 拒绝检测我的网络摄像头。我不确定它在内部是如何工作的,因为文档非常有限,但是 CaptureFromCAM(-1) 返回了一些对象,但 QueryFrame 返回了一个对象。当我尝试在奶酪中使用我的两台相机中的一台时,我可以毫无问题地获得视频。

    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)

有任何想法吗?

4

1 回答 1

2

好的,我已经想通了。基本上我的 openvc 是用 v4l(linux 视频)支持编译的。

解决此问题时,您首先需要确保您的相机与其他使用 v4l 的应用程序一起使用。如果是这种情况,那么您可以尝试使用 v4l 支持重新编译 openvc。对于 gentoo(使用 portage)来说非常简单:

    sudo su
    USE="v4l v4l2" emerge -av opencv

对于其他包管理器,要么找出一些东西,要么使用 USE_V4L=ON 从源代码编译。

于 2012-10-04T14:04:50.077 回答