让opencv2.4.9使用python读取(和显示)视频文件时遇到了一些问题。我知道找到这个文件不是问题,因为我能够让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()
输出:
^{pr2}$我知道有好几个人也有同样的问题。 This thread和{a2}都通过说必须重命名opencv来解决这个问题_ffmpeg.dll文件以适合您的版本,并将其复制到python主目录或路径中的目录(或类似的东西)。在
但是,我使用的是pythown2.7.13(根据我教授的推荐),库和包的设置路径和方式似乎与其他线程完全不同。enthough使用了一个包管理器,可以自动下载并为我设置OpenCV。没有Python目录。每件事都是经过深思熟虑的。经过一番挖掘,我找到了所有OpenCV.dll的位置,包括OpenCV_ffmpeg249_64.dll:
C:\Users\USERNAME\AppData\Local\Enthought\Canopy\edm\pkgs\03\9d58e152b8f411718220c30639b8448585cb7d9a82de662c7e34b35d9ec1f6
那我该怎么办?在哪里复制.dll?.dll是问题所在吗?我尝试了很多方法,包括把它复制到各种地方和重命名.dll,但都没有奏效。救命啊!在
为了解决您的问题,我建议您从头开始并执行以下步骤:
1-在您的机器上安装一个新的标准版本的python3
2-下载获取-点对点来自https://bootstrap.pypa.io/get-pip.py的文件
3-打开终端和cd到下载get的文件夹-点对点文件
4-然后在终端上输入
python3 get-pip.py
,以便安装pip5-一旦安装了pip,您就可以通过在终端上输入
pip install cmake
来安装cmake6-现在转到https://github.com/opencv/opencv并下载opencv的整个存储库
7-在终端cd上下载opencv存储库的文件夹中,并使用cmake类型进行编译
8-现在cd到你的脚本.py的位置,您应该能够在终端上无问题地执行脚本
python3 yourscript.py
如果这能解决问题,请告诉我
希望这有帮助
问题(至少在我没有测试文件的情况下)是,您的代码在
testvid.read()
之后未能检查ret
的值。当这个调用返回False
时,就没有更多的帧要显示了,所以不出意外,imshow()
将失败。在不要在包管理器专用缓存目录下做任何事情,如果你搞砸了,谁知道你会破坏什么。您的Canopy python环境位于Canopy\edm\envs\User中。在
如果不做进一步的调查,我不知道您的脚本是否应该在Python2.7中运行,但是如果您想按照第一个答案的建议尝试使用Python3.5,那么可以按照以下说明在Canopy安装中轻松地安装Python3.5环境:http://docs.enthought.com/canopy/configure/python-environments.html
相关问题 更多 >
编程相关推荐