2016-11-10 62 views
0

我剛開始學習的OpenCV和我通過教程在這裏工作失敗的錯誤:https://opencv24-python-tutorials.readthedocs.io/en/stable/py_tutorials/py_gui/py_video_display/py_video_display.htmlOpenCV的Python的斷言播放.AVI時

這是我寫播放視頻示例代碼。

import numpy as np 
import cv2 

cap = cv2.VideoCapture('samples/vtest.avi') 

while (cap.isOpened()): 
    ret, frame = cap.read() 

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 

    cv2.imshow('frame', gray) 
    if cv2.waitkey(1) & 0xFF == ord('q'): 
     break 

cap.release() 
cv2.destroyAllWindows() 

這是錯誤消息我得到:

OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cvtColor, file /tmp/opencv-20161020-7399-1yrk4nm/opencv-2.4.13.1/modules/imgproc/src/color.cpp, line 3739 
Traceback (most recent call last): 
    File "vidFile_tutorial.py", line 14, in <module> 
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 
cv2.error: /tmp/opencv-20161020-7399-1yrk4nm/opencv-2.4.13.1/modules/imgproc/src/color.cpp:3739: error: (-215) scn == 3 || scn == 4 in function cvtColor 

我不確定這個問題是因爲我選擇的文件由教程中指定的斷言失敗的錯誤。而且,當我嘗試手動播放vtest.avi時,我遇到了QuickTime的編解碼器錯誤。因此,我懷疑它是OpenCV的視頻編解碼器問題。但我不確定診斷是否正確,以及如何解決問題。

在此先感謝。

+0

可能與[這裏](http://stackoverflow.com/a/31299501/5008845)的問題相同。你可以打印「框架」的形狀?你可能會發現它已經是灰度,你不需要轉換。 – Miki

+0

'print frame.shape'返回'AttributeError:'NoneType'對象沒有'shape'屬性所以我猜圖像不能正確讀取? –

回答

0

好吧, 所以我設法通過使用OpenCV 3.1.0而不是2.4.13.1來解決這個問題。

隨着OpenCV 3.1.0一切工作正常。