2017-06-03 167 views
4

我在關注the official documentation,試圖從網絡攝像頭閱讀視頻。正如我從文檔運行一段代碼:如何使用OpenCV從網絡攝像頭讀取視頻?

import numpy as np 
import cv2 

cap = cv2.VideoCapture(0) 

while(True): 
    # Capture frame-by-frame 
    ret, frame = cap.read() 

    # Our operations on the frame come here 
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 

    # Display the resulting frame 
    cv2.imshow('frame',gray) 
    if cv2.waitKey(1) & 0xFF == ord('q'): 
     break 

# When everything done, release the capture 
cap.release() 
cv2.destroyAllWindows() 

它失敗,出現以下輸出:

OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cvtColor, file /io/opencv/modules/imgproc/src/color.cpp, line 9748
Traceback (most recent call last):
File "capture.py", line 11, in
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.error: /io/opencv/modules/imgproc/src/color.cpp:9748: error: (-215) scn == 3 || scn == 4 in function cvtColor

檢查它進一步,看來:

  • ret總是False
  • 添加cap.get(3)(獲取圖片的寬度)返回0.0
  • 如果我測試cap.isOpened(),結果總是False
  • 如果我添加對cap.open(0)的呼叫,則open也會返回False
  • 調用cap.open("/dev/video0")沒有改變。
  • 替換cap = cv2.VideoCapture(0)cap = cv2.VideoCapture("/dev/video0")沒有效果。

在VLC中打開/dev/video0顯示來自網絡攝像頭的視頻。當我打開奶酪時,它也會顯示攝像頭的視頻。只有一臺攝像機連接到PC。

有什麼建議嗎?

+1

你是如何安裝opencv的?你的操作系統是什麼?你使用什麼版本的Python? – eyllanesc

+0

你是如何安裝Opencv的? – ZdaR

+0

@eyllanesc:我安裝了OpenCV(並且重新安裝一次,以確保它)。由於我發佈了這個問題,我嘗試了C++示例,並且它可以工作。我使用的是最新版本的Ubuntu和Python 3. –

回答

0

您可能缺少FFMPEG。 OpenCV需要編解碼器信息來解碼ffmpeg提供的視頻,打開攝像機等。

在Windows上安裝FFmpeg的步驟在此處詳述http://www.wikihow.com/Install-FFmpeg-on-Windows。繼Linux之後,可能會解決你的問題

+0

已安裝ffmpeg 2.8.11。 –

+0

你使用pip或Anaconda安裝opencv嗎? –

相關問題