OpenCV 2.4.9 VideoCapture()赢得';t在Enthound Python 2.7环境中读取视频文件

OpenCV 2.4.9 VideoCapture()赢得';t在Enthound Python 2.7环境中读取视频文件,python,python-2.7,opencv,video-capture,enthought,Python,Python 2.7,Opencv,Video Capture,Enthought,我一直在使用python让OpenCV 2.4.9读取(并显示)视频文件时遇到问题。我知道查找文件没有问题,因为我能够从同一目录中读取图像。这肯定是cv2.VideoCapture()的问题。以下是我得到的代码和输出: import cv2 import numpy as np testvid = cv2.VideoCapture('testvid.avi') while(1): ret, frame = testvid.read() print ret c

我一直在使用python让OpenCV 2.4.9读取(并显示)视频文件时遇到问题。我知道查找文件没有问题,因为我能够从同一目录中读取图像。这肯定是cv2.VideoCapture()的问题。以下是我得到的代码和输出:

import cv2
import numpy as np

    testvid = cv2.VideoCapture('testvid.avi')

while(1):
    ret, frame = testvid.read()
    print ret

    cv2.imshow('frame',frame)
    k = cv2.waitKey(30) & 0xff
    if k == 27:
        break

testvid.release()
cv2.destroyAllWindows()
输出:

False

error: C:\pisi\tmp\opencv-2.4.9-5\work\opencv-2.4.9\modules\highgui\src\window.cpp:261: error: (-215) size.width>0 && size.height>0 in function cv::imshow 
OpenCV Error: Assertion failed (size.width>0 && size.height>0) in cv::imshow, file C:\pisi\tmp\opencv-2.4.9-5\work\opencv-2.4.9\modules\highgui\src\window.cpp, line 261
我知道有好几个人也有同样的问题。 这两种方法都解决了这个问题,都说必须重命名opencv_ffmpeg.dll文件以适应您的版本,并将其复制到python主目录或路径中的目录(或类似的目录)

然而,我使用的是Python 2.7.13到Enthow(根据我教授的推荐),库和包的设置路径和方式似乎与其他线程中的完全不同。Enthound使用一个包管理器,可以自动下载并为我设置OpenCV。没有Python目录。一切都经过了热情的思考。经过一些挖掘,我找到了所有OpenCV.dll的位置,包括OpenCV_ffmpeg249_64.dll:

C:\Users\USERNAME\AppData\Local\Enthought\Canopy\edm\pkgs\03\9d58e152b8f411718220c30639b8448585cb7d9a82de662c7e34b35d9ec1f6

那我该怎么办?在哪里复制.dll?这里的问题是.dll吗?我已经尝试了很多事情,包括将它复制到各种地方和重命名.dll,但都没有成功。救命啊

为了解决您的问题,我建议您从头开始,并执行以下步骤:

1-在您的计算机上安装新的标准版的Python 3

2-从下载get-pip.py文件

3-打开终端并将cd放入下载get-pip.py文件的文件夹中

4-然后在终端上键入
python3 get pip.py
,以便安装pip

5-一旦安装了pip,您就可以通过在终端上键入
pip install cmake
来安装cmake

6-现在转到并下载整个opencv存储库

7-在终端cd上,下载opencv存储库并使用cmake键入进行编译的文件夹

mkdir release

cd release

cmake -D CMAKE_BULD_TYPE=RELEASE -D BUILD_PYTHON_SUPPORT=ON USE_V4L=ON WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON USE_GStreamer=ON ..

make

make install
8-现在将cd刻录到yourscript.py所在的目录,您应该能够在终端上键入python3 yourscript.py时毫无问题地执行脚本

让我知道这是否解决了问题


希望这有助于

不要在该目录中执行任何操作—这是一个package manager专用缓存目录,如果您弄乱了它,谁知道您会破坏什么。您的Canopy python环境位于Canopy\edm\envs\User中


没有进一步的调查,我不知道您的脚本是否应该在Python2.7中运行,但是如果您想按照第一个答案的建议在Python3中进行尝试,您可以按照以下说明轻松地在您的Canopy安装中安装Python3.5环境:

问题(至少在没有测试文件的情况下我可以告诉您)您的代码在
testvid.read()
之后未能检查
ret
的值。当此调用返回
False
时,将没有更多的帧可显示,因此毫不奇怪,
imshow()
将失败。

感谢您的建议。我下载了Python3并使pip正常工作,但是,我无法使cmake正常工作。我尝试了另一种安装opencv的方法,让pip加载opencv的.whl文件。但是现在当我运行程序时,我得到了以下信息:
ImportError:DLL加载失败:%1不是有效的win32应用程序
我还应该澄清我使用的是windows 10。不要试图通过pip安装其.whl文件来安装opencv:它不会工作。你能提供关于你在使用cmake时遇到的问题的详细信息吗?我在Enthound Canopy中使用Python3.5进行了尝试,它给了我一个类似的错误。这次天篷安装了opencv 3.2.0。@SPACEGY44,这回答了你的问题吗?@SPACEGY44