用Python来进行简单的视频处理

这篇具有很好参考价值的文章主要介绍了用Python来进行简单的视频处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

         本质上视频是由一张张图像组成,视频处理建立在图像处理之上,视频每一帧就是一张图像。首先需要配置好opencv或其它计算机视觉库,才能用程序语言来实现对视频文件一些简单的操作。本文主要使用opencv来处理视频文件。

1读取视频转化为图片

1.1函数简介

VideoCapture支持视频文件读取,也支持直接从摄像头中读取。

1.2具体操作

1读取视频文件,用VideoCapture来实例化对象获得视频源。

2判断读取是否成功

3根据需要抽帧处理

4去文件夹查看图片

1.3小例子

#导入opencv库
import cv2 as cv

video_path = "videos/ggbond.mp4"  # 读取视频路径
capture = cv.VideoCapture(video_path) #实例化VideoCapture类

#查看视频文件的宽、高、帧数率以及总帧数
width = int(capture.get(cv.CAP_PROP_FRAME_WIDTH))  # 360
height = int(capture.get(cv.CAP_PROP_FRAME_HEIGHT))  # 480
fps = round(capture.get(cv.CAP_PROP_FPS))  # 30
frameCount = int(capture.get(cv.CAP_PROP_FRAME_COUNT))  # 2313
#打印出数据
print(height, width, fps, frameCount)

#视频帧数初值
frame_count = 0
#抽帧间隔
timed = 231

#检查读取是否成功
while capture.isOpened():
    ret, frame = capture.read()  # 读取一帧

    if not ret:
        break

    frame_count += 1

    # 设置保存路径和文件名(可以根据需要进行更改)
    # 为你的图片取名格式化
    save_path = "save/{}.jpg".format(frame_count)
    
    #抽帧条件
    if(frame_count%timed==0):

        # 保存一帧为一张图片
        cv.imwrite(save_path, frame)

capture.release()  # 释放资源

        以上是简单的读取一个视频转化为多张图片。自己可以先查看视频的总帧数为多少,然后设置抽帧间隔,获取自己想要的图片数量。比如,这个ggbond的视频总帧数2313,要获得获得十张图片就设置抽帧间隔为231。这样就完成了视频向图片的转换

在save文件中生成结果如下

视频处理程序python,python,opencv

2读取视频转化为视频

2.1函数简介

用VideoCapture读取视频文件,VideoWriter用于视频文件的写出和保存。

VideoWriter有四个参数,具体如下

cv.VideoWriter([filename, fourcc, fps, frameSize[, isColor]]) → <VideoWriter object>


filename:读取或保存的视频文件的路径,包括扩展名
fourcc:用于压缩帧的编码器/解码器的字符代码,
- CV_FOURCC(‘I’,‘4’,‘2’,‘0’),未压缩的YUV编码格式,扩展名为 .avi
- CV_FOURCC(‘P’,‘I’,‘M’,‘1’),MPEG-1 编码格式,扩展名为 .avi
- CV_FOURCC( ‘X’,‘V’,‘I’,‘D’),MPEG-4 编码格式,扩展名为 .avi
- CV_FOURCC( ‘F’,‘L’,‘V’,‘I’),Flash 编码格式,件扩展名为 .flv
fps:视频流的帧速率
frameSize:元组 (w, h),视频帧的宽度和高度
isColor:是否彩色图像

2.2具体操作

1.读取视频文件,用VideoCapture来实例化对象获得视频源。

2创建写入视频路径,用VideoWriter实例化对象写入视频

3判断是否读取成功,并进行处理(这里还是用了抽帧处理)

4如果读取成功,可以在此过程中查看视频

5将处理后的帧写入视频文件

2.3小例子

#视频文件的读取、播放和保存
import cv2 as cv


# 创建视频读取/捕获对象
vedioRead = "videos/g.mp4"  # 读取视频文件的路径
capture = cv.VideoCapture(vedioRead)  # 实例化 VideoCapture 类

# 查看视频图像的高,宽,帧速率和总帧数
width = int(capture.get(cv.CAP_PROP_FRAME_WIDTH))  # 960
height = int(capture.get(cv.CAP_PROP_FRAME_HEIGHT))  # 540
fps = round(capture.get(cv.CAP_PROP_FPS))  # 30
frameCount = int(capture.get(cv.CAP_PROP_FRAME_COUNT))  # 1826
print(height, width, fps, frameCount)

# 创建写入视频对象
# fourcc = cv.VideoWriter_fourcc('X', 'V', 'I', 'D')  # 编码器设置 XVID
fourcc = cv.VideoWriter_fourcc(*'XVID')  # 'X','V','I','D' 简写为 *'XVID'
vedioWrite = "videos/a_1.avi"  # 写入视频文件的路径
capWrite = cv.VideoWriter(vedioWrite, fourcc, fps, (width, height), True)

# 读取视频文件,抽帧写入视频文件
frameNum = 0  # 视频帧数初值
timef = 10  # 设置抽帧间隔

while capture.isOpened():  # 检查视频捕获是否成功
    # capture.set(cv2.CAP_PROP_POS_FRAMES, frame_indesx)
    ret, frame = capture.read()  # 读取下一帧视频图像

    if ret is True:
        #显示捕获的帧画面
        frameNum += 1  # 读取视频的帧数
        cv.namedWindow("frame", 0)
        cv.resizeWindow("frame", 700, 1200)
        cv.imshow('frame', frame)
        #cv.imshow(vedioRead, frame)  # 播放视频图像

        if (frameNum % timef == 0):  # 判断抽帧条件
            capWrite.write(frame)  # 将当前帧写入视频文件
        if cv.waitKey(10) & 0xFF == ord('q'):  # 按 'q' 退出
            break
    else:
        print("Can't receive frame at frameNum {}".format(frameNum))
        break

capture.release()  # 关闭读取视频文件
capWrite.release()  # 关闭视频写入对象
cv.destroyAllWindows()  # 关闭显示窗口

在videos文件中会出现相应视频,如下(右边是原视频)

视频处理程序python,python,opencv

总结

        视频处理本质还是图像处理,有很多对于图像的操作,视频也能用。本文只提出了最简单的处理,希望和大家一起学习交流进步。

 

 文章来源地址https://www.toymoban.com/news/detail-779826.html

到了这里,关于用Python来进行简单的视频处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • OpenCV开发实战 --(C++/Python) 进行视频中的简单背景估计-附源码

    在许多计算机视觉应用中,您可以使用的处理能力较低。在这种情况下,我们必须使用简单但有效的技术。 在这篇文章中,我们将介绍一种这样的技术,用于在相机静态且场景中存在一些移动物体时估计场景的背景。这种情况并不少见。例如,许多交通和监控摄像头都是固定

    2024年02月16日
    浏览(37)
  • Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之六 简单进行人脸训练与识别

    目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之六 简单进行人脸训练与识别 一、简单介绍 二、简单进行人脸训练与识别 1、LBPH(Local Binary Patterns Histograms)算法进行人脸训练和识别 2、实现步骤: 3、判断是谁的人脸: 案例中涉及的关键函数说

    2024年04月26日
    浏览(86)
  • Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之六 简单图像倾斜校正处理效果

    目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之六 简单图像倾斜校正处理效果 一、简单介绍 二、简单图像倾斜校正处理效果实现原理 三、简单图像倾斜校正处理效果案例实现简单步骤 四、注意事项 Python是一种跨平台的计算机程序设计语言。是一种面向对

    2024年04月13日
    浏览(62)
  • ffmpeg与opencv-python处理视频

    1.下载 FFmpeg 访问FFmpeg官方网站。 选择 “Windows builds from gyan.dev” 链接,这会带您到一个包含最新版本 FFmpeg Windows 构建的页面。 选择一个适合您系统的版本(例如,32位或64位),并下载 ZIP 文件。 2.解压文件 将下载的 ZIP 文件解压到选择的文件夹中。 3.添加 FFmpeg 到您的环境

    2024年01月22日
    浏览(40)
  • 使用Python和OpenCV进行图像处理和分析

    简介: 图像处理和分析是计算机视觉领域的重要组成部分。本文将介绍如何使用Python编程语言和OpenCV库进行图像处理和分析。我们将涵盖图像读取、显示、滤波、边缘检测和图像分割等常见的图像处理操作,并提供相应的代码示例。 安装OpenCV: 首先,我们需要安装OpenCV库。

    2024年02月12日
    浏览(57)
  • opencv 图像和视频处理的基本操作(python)

    原图:   1 图片的获取 主要通过cv2.imread(src)函数进行获取 2 图片的显示 3 ROI区域(图片截取) 4 图片的RGB通道划分 注意cv2.imread()获取的图片通过顺序为BGR,而非RGB,即B为0,G为1,R为2  保留R通道  保留G通道   保留B通道   5 RGB通道合成   6 边界填充 主要是通过cv2.copyMakeBo

    2023年04月21日
    浏览(59)
  • Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 视频图像处理基础操作 之 视频捕获/存储/提取/合成/合并

    目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 视频图像处理基础操作 之 视频捕获/存储/提取/合成/合并 一、简单介绍 二、视频处理流程和原理 三、视频的捕获和存储 四、提取视频中的某些帧 五、将图片合成为视频 六、多个视频合并 Python是一种跨平台的计算机程序设计

    2024年04月10日
    浏览(114)
  • 如何使用Python进行可视化/音视频处理?

    要使用Python进行可视化和音视频处理,可以使用以下库: matplotlib:用于绘制各种类型的图表和图形,包括折线图、柱状图、散点图等。 seaborn:基于matplotlib的可视化库,提供更高级别的图表和样式,用于创建各种吸引人的统计图表。 plotly:用于创建交互式图表和数据可视化

    2024年02月09日
    浏览(65)
  • OpenCV-Python中的图像处理-视频分析

    学习使用 Meanshift 和 Camshift 算法在视频中找到并跟踪目标对象: Meanshift 算法的基本原理是和很简单的。假设我们有一堆点(比如直方 图反向投影得到的点),和一个小的圆形窗口,我们要完成的任务就是将这个窗 口移动到最大灰度密度处(或者是点最多的地方)。如下图所

    2024年02月12日
    浏览(51)
  • Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之四 简单行人人体检测效果

    目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之四 简单行人人体检测效果 一、简单介绍 二、简单行人人体检测效果实现原理 三、简单行人人体检测效果案例实现简单步骤 四、注意事项 Python是一种跨平台的计算机程序设计语言。是一种面向对

    2024年04月26日
    浏览(58)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包