我在關注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。
有什麼建議嗎?
你是如何安裝opencv的?你的操作系統是什麼?你使用什麼版本的Python? – eyllanesc
你是如何安裝Opencv的? – ZdaR
@eyllanesc:我安裝了OpenCV(並且重新安裝一次,以確保它)。由於我發佈了這個問題,我嘗試了C++示例,並且它可以工作。我使用的是最新版本的Ubuntu和Python 3. –