Python中OpenCV读取视频文件非常慢

发布于 2024-12-17 20:16:25 字数 454 浏览 0 评论 0原文

我正在尝试使用 Python 中的 OpenCV 进行一些视频处理,但它对我来说速度非常慢。 例如,简单读取和显示所有帧的速度约为 1 fps:

import cv2
cap = cv2.VideoCapture("out1.avi")
cv2.namedWindow("input")
while(True):
    f, img = cap.read()
    cv2.imshow("input", img)
    cv2.waitKey(1)

C++ 中的相同视频文件以大约 30 fps 渲染没有任何问题。有什么想法为什么Python版本这么慢吗?

Python 版本还有一个有趣的事情:它不显示 C++ 版本可以处理的 .wmv 文件(因为我的 Python 只能打开原始视频)。

我使用 OpenCV 2.3.1 和 Python 2.7

感谢您的帮助!

I'm trying to use OpenCV from Python for some video processing and it works extremely slow for me.
For example a simple reading and showing of all frames works at about 1 fps:

import cv2
cap = cv2.VideoCapture("out1.avi")
cv2.namedWindow("input")
while(True):
    f, img = cap.read()
    cv2.imshow("input", img)
    cv2.waitKey(1)

The same video file in C++ is rendered without any problems at about 30 fps. Are there any ideas why Python version is so slow?

And there is another interesting thing about Python version: it doesn't show .wmv files which C++ version can process (for my Python can open raw video only).

I use OpenCV 2.3.1 and Python 2.7

Thanks for help!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

柒七 2024-12-24 20:16:25

代码在我的机器上正常(快速)运行(win7-64上的opencv 2.3.0和python 2.6.4,播放未压缩的avi文件)。

您是否尝试过使用旧版 python 接口(cv 而不是 cv2)的性能?

关于 .wmv 视频播放,Python 接口(或者特别是 ffmpeg)有点问题。除了未压缩的 .avi 文件之外,它无法播放。

The code runs normally (fast) in my machine (opencv 2.3.0 & python 2.6.4 on win7-64, playing uncompressed avi file).

have you tried the performance using older python interface (cv instead of cv2)?

regarding .wmv video playback, it's kinda having problem with python interface (or specifically the ffmpeg). it can't play other than uncompressed .avi files.

你曾走过我的故事 2024-12-24 20:16:25

尝试将 cv2.waitKey(1) 中的“1”更改为更高的值,例如 cv2.waitKey(30)

Try changing the "1" in cv2.waitKey(1) into a higher value say cv2.waitKey(30)

-残月青衣踏尘吟 2024-12-24 20:16:25

文章 “Python 中的闪电般快速视频阅读” 指出OpenCV 没有针对快速视频读取进行优化,并比较了其他库。

基准代码位于此处。您可以在您的视频上运行它。结果可能取决于视频分辨率、编解码器、硬件等。

Decord 库似乎在大多数情况下获胜。

The article "Lightning Fast Video Reading in Python" points out that OpenCV wasn't optimized for fast video reading, and compares other libraries.

The benchmark code is here. You can run it on your video. Results may depend on the video resolution, codec, your hardware, etc.

The Decord library seems to win in most cases.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文