【问题标题】:Video Processing using Python and OpenCV使用 Python 和 OpenCV 进行视频处理
【发布时间】:2014-04-01 22:34:36
【问题描述】:

我正在尝试使用 python 和 openCV 捕获视频并转换为帧。我按照在 Windows 8 中为 python 导入 o​​penCV2 库所需完成的步骤如下:

从他们的官方网站下载 Python、Numpy、OpenCV。

解压OpenCV(将解压到opencv文件夹中)

复制..\opencv\build\python\x86\2.7\cv2.pyd

粘贴到 C:\Python27\Lib\site-packages

打开 Python IDLE 或终端,然后输入

以上步骤我已经完成了将opencv库导入python的步骤。

但是当我导入 CV2 库并尝试捕获视频时,我无法使用函数 cv.CaptureFromFile() 生成帧并使用 cv.QueryFrame() 函数访问帧。我无法捕捉帧。请在下面找到代码。

import sys
import os
import numpy as np
import PIL
from matplotlib import pyplot as plt
import cv2.cv as cv

winname = "myWindow"
win = cv.NamedWindow(winname, cv.CV_WINDOW_AUTOSIZE)

invideo = cv.CaptureFromFile("chayya1.avi")

totalNumberOfFrames = int(cv.GetCaptureProperty(invideo, cv.CV_CAP_PROP_FRAME_COUNT))
framesprocessing = totalNumberOfFrames
print(totalNumberOfFrames)
while (True):
    im = cv.QueryFrame(invideo)
    cv.ShowImage(winname, im)
    if cv.WaitKey() == 27: # ASCII 27 is the ESC key
        break
del invideo
cv.DestroyWindow(winname)

正在处理输出,没有任何错误,但没有生成帧,甚至帧计数的打印语句也为零。

我只想了解在 Windows 中安装 OpenCV for python 并使用上述功能访问视频帧的过程。

提前致谢

【问题讨论】:

  • 您尝试过不同的视频或网络摄像头吗?另外,您是否安装了当前版本的 ffmpeg 或 gstreamer?
  • 我已经尝试使用网络摄像头并且它正在工作。当我将视频文件作为输入时,该功能不会捕获帧
  • 看来你要解析的视频无法解码。我会尝试不同的和/或安装/更新 ffmpeg
  • 我已经检查了多个视频。能否请您提供安装ffmpeg的过程

标签: python opencv python-2.7 numpy


【解决方案1】:

使用opencv读取视频文件

正如教程here 中所述,现在推荐的方法是使用cv2(而不是像您那样使用cv)来读取视频文件,例如

import numpy as np
import cv2

cap = cv2.VideoCapture("chayya1.avi")

while(cap.isOpened()):
    ret, frame = cap.read()

    cv2.imshow('frame',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

Windows 上的 Python 和 OpenCV 安装

对于在 Windows 上安装 OpenCV 的 python 绑定的简单解决方案,您可能想尝试Python(xy) distribution,它捆绑了一堆 python 模块including opencv

Python 的 opencv 绑定包含在 opencv 中,因此如果您没有收到任何导入错误,那么您的 opencv 设置很可能是正确的。

替代绑定

如果您不喜欢本机绑定,可以尝试在命令行中使用pip 来安装第 3 方绑定,但正如 berak 指出的那样,通常不建议这样做;

pip install pyopencv  

Pip 本身可以按照this answer 中的说明进行安装

【讨论】:

  • 等等,pyopencv 不是 opencv 的原生 python 包装器,而是第 3 方? (那将是一个非常糟糕的主意)
  • 感谢您的评论@berak,相应地更新了帖子
  • 你也可以pip install opencv-python获取官方包装
  • @EranW - 似乎不是...“用于 Python 的非官方预构建 OpenCV 包。”?取自 opencv-python 的 pypi 页面:pypi.org/project/opencv-python
猜你喜欢
  • 1970-01-01
  • 2014-02-22
  • 2012-01-01
  • 2014-02-04
  • 2017-07-28
  • 1970-01-01
  • 2016-09-21
  • 2014-09-04
  • 1970-01-01
相关资源
最近更新 更多