2012-10-03 40 views
2

我想在python中使用opencv編碼簡單的人臉檢測。但不幸的是我的opencv拒絕檢測我的攝像頭。我不確定它是如何在內部工作的,因爲文檔非常有限,但是CaptureFromCAM(-1)返回一些對象,但QueryFrame返回非對象。當我嘗試在我的兩臺攝像機中使用其中一臺攝像機時,我可以毫無問題地觀看視頻。opencv + python + linux + webcam =無法捕獲幀

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

我在我的電腦上試過你的代碼,它工作正常,所以你的OpenCV設置可能有問題。順便說一句,爲什麼你不使用更新,更好的文檔'cv2'界面? – casper

回答

2

好吧,我已經想通了。基本上我的openvc是用v4l(video for linux)支持編譯的。

解決此問題時,首先需要確保您的相機使用v4l與其他應用程序一起工作。如果是這樣的話,那麼你可以嘗試用v4l支持重新編譯openvc。對於巴布亞(使用搬運)是非常簡單的:

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

其他包管理器要麼圖出來的東西或從與USE_V4L = ON源代碼編譯。