OpenCV实现视频的读取、显示、保存

这篇具有很好参考价值的文章主要介绍了OpenCV实现视频的读取、显示、保存。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1,从文件中读取视频并播放

1.2代码实现

1.3效果展示

2,保存视频

2.1    代码实现

2.2   结果展示


下面将详细介绍如何使用OpenCV实现视频的读取、显示和保存,并解释其原理。

  1. 视频读取: 使用OpenCV可以通过cv2.VideoCapture类来读取视频文件。该类提供了一系列方法用于操作视频,如open打开视频文件,read读取视频帧等。首先需要创建一个VideoCapture对象,并指定视频文件的路径或设备索引号。然后通过read方法循环读取视频帧,直到读取完所有帧或发生错误。

    原理:VideoCapture类基于相应的视频输入接口(如摄像头、视频文件等)实现了视频读取的功能。它使用底层的视频设备驱动程序或解码器来获取视频帧数据,并将其提供给上层应用程序进行处理。

  2. 视频显示: 在读取到视频帧后,可以使用cv2.imshow方法将帧显示在窗口中。需要创建一个窗口对象,并指定窗口名称,然后通过imshow方法传入帧数据即可。为了保持视频播放的流畅性,还可以使用cv2.waitKey方法设置适当的延迟时间,以控制帧之间的显示间隔。

    原理:imshow方法使用系统级的图形库(如OpenGL、DirectX等)将帧数据绘制在显示器上,实现视频帧的显示功能。waitKey方法用于等待键盘输入,通过相应的延迟时间控制帧的显示速度。

  3. 视频保存: 在进行视频处理后,可以使用cv2.VideoWriter类将处理结果保存为视频文件。首先需要创建一个VideoWriter对象,并指定输出文件的名称、编码器、帧率和图像尺寸等参数。然后通过write方法将处理后的帧写入到输出文件中,最后调用release方法释放资源。

    原理:VideoWriter类利用系统级的视频编码库(如FFmpeg、OpenH264等)将帧数据编码并写入输出视频文件。它提供了对输出文件格式、编码器和参数的灵活配置,以满足不同需求的视频保存操作。

通过以上步骤,我们可以利用OpenCV实现视频的读取、显示和保存。在实现过程中,OpenCV利用底层的视频设备驱动程序或解码器获取视频帧数据,并利用图形库和视频编码库实现帧的显示和保存。这些功能的实现使得OpenCV成为一个强大的视频处理工具,在计算机视觉、图像处理等领域得到广泛应用。

1,从文件中读取视频并播放

在OpenCV中我们需要获取一个视频,需要创建一个VideoCapture对象,指定你要读取的视频文件:

(1)创建读取视频的对象

cap = cv.VideoCapture(filepath)   参数:视频文件路径

(2)视频的某些属性

【opencv c++】调用摄像头读取视频并显示 并在指定位置保存,OpenCV从入门到精通,opencv,音视频,人工智能,python

【opencv c++】调用摄像头读取视频并显示 并在指定位置保存,OpenCV从入门到精通,opencv,音视频,人工智能,python

【opencv c++】调用摄像头读取视频并显示 并在指定位置保存,OpenCV从入门到精通,opencv,音视频,人工智能,python

(3)判断图像是否读取成功

【opencv c++】调用摄像头读取视频并显示 并在指定位置保存,OpenCV从入门到精通,opencv,音视频,人工智能,python

(4)获取视频的一帧图像

【opencv c++】调用摄像头读取视频并显示 并在指定位置保存,OpenCV从入门到精通,opencv,音视频,人工智能,python

(5)调用cv.imshow显示图像,在显示图像时使用cv.waitkey()设置适当的持续时间,如果太低视频会播放的非常快,如果太高就会播放的非常慢,通常情况下设置为  25  ms

(6) 调用cap.release()将视频释放掉

1.2代码实现

import numpy as np
import cv2 as cv

#获取视频对象
cap = cv.VideoCapture(r'E:\All_in\opencv\video.mp4')
#判断是否读取成功

while(cap.isOpened()):
    #获取某一帧图像
    ret , frame = cap.read()
    #获取成功显示图像
    if ret == True:
        cv.imshow('frame',frame)
    #每一帧间隔25ms
    if cv.waitKey(25)& 0xFF == ord('q'):
        break

#释放视频对象
cap.release()
cv.destroyWindow()

1.3效果展示

【opencv c++】调用摄像头读取视频并显示 并在指定位置保存,OpenCV从入门到精通,opencv,音视频,人工智能,python

2,保存视频

【opencv c++】调用摄像头读取视频并显示 并在指定位置保存,OpenCV从入门到精通,opencv,音视频,人工智能,python

【opencv c++】调用摄像头读取视频并显示 并在指定位置保存,OpenCV从入门到精通,opencv,音视频,人工智能,python

2.1    代码实现

import cv2 as cv
import numpy as np

#读取视频
cap = cv.VideoCapture(r'E:\All_in\opencv\video.mp4')

#获取图像的属性(宽和高),并将其转化为整数
frame_width = int(cap.get(3))
frame_height = int(cap.get(4))

#创建保存图像的对象 , 设置编码格式,帧率,图像的宽 高等
'''函数第一个参数为输出文件路径,因为我们想保存为AVI格式,所以要指定编码格式为'M','J','P','G'(MJPEG压缩)
,帧率设置为10,视频帧的宽高设置为前面获取到的frame_width和frame_height。'''
out = cv.VideoWriter('outpy.avi',cv.VideoWriter_fourcc('M','J','P','G'),10,(frame_width,frame_height))
while(True):
    #获取视频中每一帧图像
    ret ,frame= cap.read()
    if ret==True:
        #将每一帧图像写入输出文件中
        out.write(frame)
    else:
        break

#释放资源
cap.release()
out.release()
cv.destroyAllWindows()

2.2   结果展示

【opencv c++】调用摄像头读取视频并显示 并在指定位置保存,OpenCV从入门到精通,opencv,音视频,人工智能,python文章来源地址https://www.toymoban.com/news/detail-775201.html

到了这里,关于OpenCV实现视频的读取、显示、保存的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • OpenCV学习之视频读取与帧的提取、显示及保存

    OpenCV支持从摄像头或视频文件(AVI)中抓取图像并保存为另一视频文件. 一、 从摄像头获取初始化: 从视频文件filename.avi获取初始化: 抓取帧: 要从多个摄像头同时获取图像, 首先从每个摄像头抓取一帧. 在抓取动作都结束后再恢复帧图像. 释放抓取源(和释放单幅图像时类似):

    2024年02月14日
    浏览(33)
  • C++ opencv:视频读取、变换颜色风格、保存

    通过此文章可快速了解C++opencv的关于视频读取、颜色风格、视频保存相关的知识点。 目录 1. 相关知识点 2. 代码 编写代码main.cpp: 编写CmakeLists.txt: 编译并执行: 3. 效果展示         在C++中,使用OpenCV库中的 VideoCapture 类来捕获视频流; VideoCapture 构造函数接受一个参数,指

    2024年02月14日
    浏览(29)
  • OpenCV中读取、显示、保存摄像头视频讲解与实战(附Python源码)

    需要源码请点赞关注收藏后评论区留言私信~~~ OpenCV不仅能够处理图像,还能够处理视频。视频是由大量的图像构成的,这些图像以固定的时间间隔从视频中获取。这样,就能够使用图像处理的方法对这些图像进行处理,进而达到处理视频的目的。要处理视频,需要先对视频进

    2024年02月05日
    浏览(32)
  • OpenCV基础知识(9)— 视频处理(读取并显示摄像头视频、播放视频文件、保存视频文件等)

    前言: Hello大家好,我是小哥谈。 OpenCV不仅能够处理图像,还能够处理视频。视频是由大量的图像构成的,这些图像是以固定的时间间隔从视频中获取的。这样,就能够使用图像处理的方法对这些图像进行处理,进而达到处理视频的目的。要想处理视频,需要先对视频进行读

    2024年02月11日
    浏览(45)
  • OpenCV4(C++)—— 视频和摄像头的加载、显示与保存

      视频或摄像头的加载是使用 cv::VideoCapture 类。(这个类和 ifstream 类比较相似,视频或摄像头的加载和文本文件操作是大致相同。主要步骤:(1)加载(打开)视频或视像头。(2) 判断加载是否成功。 (3)读取内容。(4)关闭。) 注意:   (1)VideoCapture类变量同时

    2024年02月06日
    浏览(27)
  • QT+opencv【opencv学习篇】OpenCV 读取、显示和保存图像

    目录   一、OpenCV 读取图像 OpenCV 读取函数 参数: 二、OpenCV 显示图像 imshow函数 imshow函数功能 imshow函数原型 三、OpenCV 保存图像 四、结果和代码   OpenCV 允许我们对图像执行多种操作,但要做到这一点,需要读取一个图像文件作为输入,然后我们可以对其执行各种操作。Ope

    2024年02月16日
    浏览(37)
  • OpenCV基本操(IO操作,读取、显示、保存)

    参数: 要读取的图像 读取图像的方式: cv.IMREAD*COLOR :以彩色模式加载图像,任何图像的图像的透明度都将被忽略。这是默认参数 标志: 1 cv.IMREAD*GRAYSCALE :以灰度模式加载图像 标志: 0 cv.IMREAD_UNCHANGED :包括alpha通道(透明通道)的加载图像模式。 标志: -1 可以使用 1、0或者

    2024年02月10日
    浏览(38)
  • opencv基本操作二(读取视频流与保存视频、读取摄像头并保存视频)

    opencv常用 读视频函数 cv2.VideoCapture 、 cv2.VideoCapture.get 等,可以参考这里 opencv常用 写视频函数 cv2.VideoWriter 等可以参考这里 ,其中视频格式可以参考这里 videoCapture.read() 是按帧读取视频, ret,frame 是获 .read() 方法的两个返回值。其中 ret 是布尔值,如果读取帧是正确的则返回

    2023年04月08日
    浏览(39)
  • opencv视频文件的读取,处理与保存

    opencv视频文件的读取,处理与保存 一、视频文件的读取: 1、cv::VideoCapture是OpenCV库中用于处理视频输入的类,它提供了一种简单的方法来从摄像头,视频文件、或图像序列中读取帧; (1)打开摄像头: (2)打开视频文件: (3)打开网络摄像头: (4)打开图像序列: 2、

    2024年02月04日
    浏览(32)
  • opencv从视频文件读取视频内容,从摄像头读取保存视频内容

    (1)argparse模块使编写用户友好的命令行接口变得容易。 (2)程序定义了它需要的参数,而argparse将找出如何从sys.argv中解析这些参数。 (3)argparse模块还会自动生成帮助和使用消息,并在用户给程序提供无效参数时发出错误信息。 import argparse # 导入库 parser = argparse.Argume

    2024年02月22日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包