OpenCV 2.4.9 VideoCapture()赢得';t在Enthound Python 2.7环境中读取视频文件
我一直在使用python让OpenCV 2.4.9读取(并显示)视频文件时遇到问题。我知道查找文件没有问题,因为我能够从同一目录中读取图像。这肯定是cv2.VideoCapture()的问题。以下是我得到的代码和输出: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
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