【发布时间】:2016-11-11 06:58:18
【问题描述】:
我刚刚开始学习 OpenCV,正在学习这里的教程:https://opencv24-python-tutorials.readthedocs.io/en/stable/py_tutorials/py_gui/py_video_display/py_video_display.html
这是我为播放示例视频而编写的代码。
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 的视频编解码器问题。但我不确定诊断是否正确以及我将如何解决它。
提前致谢。
【问题讨论】:
-
可能和here是同一个问题。你能打印
frame的形状吗?你可能会发现它已经是灰度了,不需要转换。 -
print frame.shape返回AttributeError: 'NoneType' object has no attribute 'shape'所以我猜图像一开始没有被正确读取?