我有一个 python(Python(x,y) 发行版)应用程序无法使用 opencv(带有 pythonxy 安装程序的 2.3.1 版)打开视频文件的问题。该文件有一个相当有问题的格式(应该是常规的 MPEG-2,但我们有播放它的问题的报告),但由 ffdshow 视频解码器处理。
我的问题是同一系统上不同的opencv实例处理文件的方式不同,安装在python目录中的版本无法读取文件。
您知道如何让 python 应用程序以与其他应用程序相同的方式处理视频文件吗?
以下代码:
import cv2.cv as cv
capture = cv.CaptureFromFile("film.mpeg")
print cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_POS_MSEC)
print cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_COUNT )
print cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_CONVERT_RGB )
cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_POS_MSEC, 50)
frame = cv.QueryFrame(capture)
cv.SaveImage("img.jpg",frame)
返回
0.0
0.0
0.0
并写入无效的图像文件。
同时,在同一台计算机上,我有一个使用 opencv(相同版本号 2.3.1)的 C++ 应用程序,它能够以这种格式打开文件。在列出了两个应用程序使用的库之后,我发现 C++ 的一个加载ffdshow.ax
(仅当我不重命名它,但请看下面的第 3 点),而 python 没有。
到目前为止我做了什么:
- 我已验证 python 应用程序为另一个文件提供了正确的结果,但格式不同
- 我认为python中opencv dll的某些编译选项可能存在问题,因此我将opencv dll替换
C:\Python27\Lib\site-packages
为正在运行的应用程序中的那些,得到的结果仍然相同。 - 我将文件重命名为
ffdshow.ax
,ffdshow.ax_
C++ 应用程序没有加载它,但仍在工作 - 这让我很困惑。