import cv2
import numpy
cap = cv2.VideoCapture("test1.avi")
while 1:
ret, frame = cap.read()
cv2.imshow("cap", frame)
if cv2.waitKey(100) & 0xff == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
我的代码在上面解释过,它在 windows 上运行良好。但是在 ubuntu 16.04 中出现错误。请解释解决方案
Unable to stop the stream: Inappropriate ioctl for device
OpenCV Error: Assertion failed (size.width>0 && size.height>0) in imshow, file /home/travis/miniconda/conda-bld/conda_1485299288502/work/opencv-3.2.0/modules/highgui/src/window.cpp, line 304
Traceback (most recent call last):
File "opncv_ex4.py", line 7, in <module>
cv2.imshow("cap", frame)
cv2.error: /home/travis/miniconda/conda-bld/conda_1485299288502/work/opencv-3.2.0/modules/highgui/src/window.cpp:304: error: (-215) size.width>0 && size.height>0 in function imshow
Ubuntu 16.04 和 opencv 3.2 python 2.7
答案1
代码等待停止的时间太长,
if cv2.waitKey(100) & 0xff == ord('q'):
因此将 100 更改为 10,如下所示:if cv2.waitKey(10) & 0xff == ord('q'):
更改此行代码后,您的 Python 脚本将在终端中完美运行。这关联列出一个包含非常短的 .avi 示例视频的网页,这些视频非常适合测试您的代码。如果您从终端运行脚本,则 .avi 视频必须位于当前目录中。
如果步骤 1 和 2 不起作用,那么通常 Anaconda 就是罪魁祸首。Anaconda 基本上是一个 Windows/Mac 程序,它完全由默认 Ubuntu 存储库中的软件包复制,只是 Anaconda 无法找到 Anaconda 未安装的任何 Python 模块,除非进行特殊配置以告诉 Anaconda 缺少的 Python 模块位于何处。或者您可以放弃并从默认 Ubuntu 存储库安装 OpenCV,不再使用 Anaconda。
sudo apt install python-opencv