当前位置: 首页 > 知识库问答 >
问题:

如何利用OpenCV和Python在视频流中逐帧处理视频图像

逄皓轩
2023-03-14

下面是我的代码

import cv2
cap = cv2.VideoCapture("./out.mp4")

while True:
    if cap.grab():
        flag, frame = cap.retrieve()
        if not flag:
            continue
        else:
            cv2.imshow('video', frame)
    if cv2.waitKey(10) == 27:
        break

所以问题是cap.grab()调用!当没有框架时,它将返回false!而且它不会再捕捉帧了,即使我等了很长时间。

共有1个答案

吕自怡
2023-03-14

在阅读了videocapture的文档之后。我发现您可以告诉videocapture,下次调用videocapture.read()(或videocapture.grab())时要处理哪个帧。

问题是,当您要读取()一个尚未准备好的帧时,videocapture对象会停留在该帧上,永远不会继续。所以你必须强迫它从上一帧重新开始。

这是代码

import cv2

cap = cv2.VideoCapture("./out.mp4")
while not cap.isOpened():
    cap = cv2.VideoCapture("./out.mp4")
    cv2.waitKey(1000)
    print "Wait for the header"

pos_frame = cap.get(cv2.cv.CV_CAP_PROP_POS_FRAMES)
while True:
    flag, frame = cap.read()
    if flag:
        # The frame is ready and already captured
        cv2.imshow('video', frame)
        pos_frame = cap.get(cv2.cv.CV_CAP_PROP_POS_FRAMES)
        print str(pos_frame)+" frames"
    else:
        # The next frame is not ready, so we try to read it again
        cap.set(cv2.cv.CV_CAP_PROP_POS_FRAMES, pos_frame-1)
        print "frame is not ready"
        # It is better to wait for a while for the next frame to be ready
        cv2.waitKey(1000)

    if cv2.waitKey(10) == 27:
        break
    if cap.get(cv2.cv.CV_CAP_PROP_POS_FRAMES) == cap.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT):
        # If the number of captured frames is equal to the total number of frames,
        # we stop
        break
 类似资料:
  • 问题内容: 我是OpenCV的初学者。我想对要上传到服务器的视频帧进行一些图像处理。我只想读取可用的框架并将它们写入目录中。然后,等待视频的另一部分上载并将帧写入目录。并且,我应该等待每个帧都完全上传,然后将其写入文件。 您能告诉我如何使用OpenCV(Python)吗? 编辑1: 我编写了这段代码,用于从文件中捕获视频,而新数据将附加在文件末尾。换句话说,该文件不是完整的视频,并且另一个程序正在

  • 我试图捕捉一个视频,并转换成帧使用python和OpenCV。我遵循了在Windows8中为python导入openCV2库所需的步骤,如下所示: 打开Python空闲或终端,然后键入 我已经完成了将opencv库导入Python的上述步骤。 但是,当我导入CV2库并试图捕获视频时,我无法使用函数生成帧,也无法使用函数访问帧。我无法捕捉帧。请查找下面的代码。

  • 我正在使用一个循环来访问使用Python和OpenCV的视频文件的所有帧。在访问每个帧时,我将该帧的索引添加到一个列表中。 但是,我比较了列表的大小和使用

  • 欢迎阅读系列教程,内容涵盖 OpenCV,它是一个图像和视频处理库,包含 C ++,C,Python 和 Java 的绑定。 OpenCV 用于各种图像和视频分析,如面部识别和检测,车牌阅读,照片编辑,高级机器人视觉,光学字符识别等等。

  • 本文向大家介绍python利用opencv保存、播放视频,包括了python利用opencv保存、播放视频的使用技巧和注意事项,需要的朋友参考一下 代码已上传至:https://gitee.com/tqbx/python-opencv/tree/master/Getting_started_videos 目标 学习读取视频,播放视频,保存视频。 学习从相机中捕捉帧并展示。 学习cv2.VideoC