2

我有一个 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 没有。

到目前为止我做了什么:

  1. 我已验证 python 应用程序为另一个文件提供了正确的结果,但格式不同
  2. 我认为python中opencv dll的某些编译选项可能存在问题,因此我将opencv dll替换C:\Python27\Lib\site-packages为正在运行的应用程序中的那些,得到的结果仍然相同。
  3. 我将文件重命名为ffdshow.axffdshow.ax_C++ 应用程序没有加载它,但仍在工作 - 这让我很困惑。
4

1 回答 1

0

我回到那个项目。这个问题的答案:

OpenCV 2.4 VideoCapture 在 Windows 上不起作用

帮助。我需要做的就是将 3rdparty/ffmpeg 目录添加到 PATH 环境变量中,并将 opencv 版本号添加到 dll 文件名(opencv_ffmpeg.dll -> opencv_ffmpeg246.dll)

于 2014-06-10T14:50:21.660 回答