我在使用python获取OpenCV 2.4.9读取(和显示)视频文件时遇到了问题。我知道查找文件不是问题,因为我能够让cv2.imread()
从同一目录中读取图像。这绝对是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
我知道有几个人遇到过同样的问题。 This thread和this tread都说明你必须重命名opencv_ffmpeg.dll文件以适合你的版本并将其复制到路径中的主python目录或目录(或者那个效果)。
但是,我通过Enthought使用Python 2.7.13(根据我的教授的推荐),并且设置的路径和方式库和包与其他线程中的方式完全不同。 Enthought使用包管理器为我自动下载和设置OpenCV。没有Python目录。一切都是通过Enthought。经过一番挖掘,我找到了所有OpenCV .dll所在的位置,包括opencv_ffmpeg249_64.dll:
C:\Users\USERNAME\AppData\Local\Enthought\Canopy\edm\pkgs\03\9d58e152b8f411718220c30639b8448585cb7d9a82de662c7e34b35d9ec1f6
那我该怎么办呢?我在哪里复制.dll? .dll甚至是问题吗?我尝试了很多东西,包括将它复制到各种各样的地方并重命名.dll,但没有任何效果。救命啊!
答案 0 :(得分:1)
为了解决您的问题,我建议您从头开始重新启动并执行以下步骤:
1 - 在您的计算机上安装新标准版 Python 3
2 - 从https://bootstrap.pypa.io/get-pip.py
下载 get-pip.py 文件3 - 打开终端并cd到您下载 get-pip.py 文件的文件夹
4 - 然后在终端上输入python3 get-pip.py
以安装点
5 - 安装该点后,您可以在终端上输入pip install cmake
来安装 cmake
6 - 现在转到https://github.com/opencv/opencv并下载整个 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
如果这解决了问题,请告诉我
希望这有帮助
答案 1 :(得分:1)
问题(至少据我所知,没有你的测试文件)是你的代码在ret
之后无法检查testvid.read()
的值。当此调用返回False
时,则不再显示任何帧,因此毫不奇怪,imshow()
将失败。
答案 2 :(得分:0)
不要在该目录中执行任何操作 - 这是一个包管理器私有缓存目录,如果你搞乱它,谁知道你会破坏什么。您的Canopy python环境位于Canopy \ edm \ envs \ User中。
如果不进行进一步调查,我不知道您的脚本是否应该在Python 2.7中运行,但如果您想按照第一个答案的建议尝试使用Python 3,则可以在Canopy安装中轻松安装Python 3.5环境,这些说明:http://docs.enthought.com/canopy/configure/python-environments.html