gpt4 book ai didi

python - 如何使 python opencv 处理 C++ 应用程序读取的文件?

转载 作者:太空宇宙 更新时间:2023-11-03 21:54:56 25 4
gpt4 key购买 nike

我有一个 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 的某些编译选项可能存在问题,所以我将 C:\Python27\Lib\site-packages 中的 opencv dll 替换为来自正在运行的应用程序,仍然得到相同的结果。
  3. 我将文件 ffdshow.ax 重命名为 ffdshow.ax_,C++ 应用程序没有加载它,但仍在工作 - 这让我很困惑。

最佳答案

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

OpenCV 2.4 VideoCapture not working on Windows

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

关于python - 如何使 python opencv 处理 C++ 应用程序读取的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10330328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com