cv2.error:(-215)size.width>0 && size.height>0 在函数 imshow 中

cv2.error:(-215)size.width>0 && size.height>0 在函数 imshow 中
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

  1. 代码等待停止的时间太长,if cv2.waitKey(100) & 0xff == ord('q'):因此将 100 更改为 10,如下所示:if cv2.waitKey(10) & 0xff == ord('q'):更改此行代码后,您的 Python 脚本将在终端中完美运行。

  2. 关联列出一个包含非常短的 .avi 示例视频的网页,这些视频非常适合测试您的代码。如果您从终端运行脚本,则 .avi 视频必须位于当前目录中。

  3. 如果步骤 1 和 2 不起作用,那么通常 Anaconda 就是罪魁祸首。Anaconda 基本上是一个 Windows/Mac 程序,它完全由默认 Ubuntu 存储库中的软件包复制,只是 Anaconda 无法找到 Anaconda 未安装的任何 Python 模块,除非进行特殊配置以告诉 Anaconda 缺少的 Python 模块位于何处。或者您可以放弃并从默认 Ubuntu 存储库安装 OpenCV,不再使用 Anaconda。

    sudo apt install python-opencv 
    

相关内容