python视频基础处理

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

前言

本文主要介绍读取视频文件,保存视频帧图片;将帧图片合成为视频;读取视频文件,对视频帧图片进行心处理,将处理完的帧图片合成视频,以完成对视频的处理。

一、基本概念

视频是由一系列图像构成的,这一系列图像被称为,帧是以固定的时间间隔从视频中获取的。获取(播放)帧的速度称为帧速率,其单位通常使用“帧/秒”表示,代表在 1 秒内所出现的帧数,对应的英文是 FPS(Frames Per Second)。如果从视频中提取出独立的帧,可以使用图像处理的方法对其进行处理,达到处理视频的目的。

二、读取视频文件,保存视频帧图片

读取视频文件,保存视频帧图片,即将组成视频的一系列帧进行保存。

import os
import cv2
import numpy as np

# 分解视频图片
cap = cv2.VideoCapture(r'E:\work\aa.mp4')
is_opened = cap.isOpened()
print(is_opened)
# 获取视频属性
fps = cap.get(cv2.CAP_PROP_FPS)   # 1s几张图片
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
print(fps, width, height)

i = 0
while is_opened:
    if i == int(fps*2):    # 获取2s帧图片
        break
    else:
        i += 1
    (flag, frame) = cap.read()
    file_name = 'img' + str(i) + '.jpg'
    file_path = r'C:\Users\ADMIN\Pictures\video\1' + os.sep + file_name
    if flag:
        cv2.imwrite(file_path, frame, [cv2.IMWRITE_JPEG_QUALITY, 100])
print('end')
cap.release()
二、图片集合成为视频
img = cv2.imread(r'C:\Users\ADMIN\Pictures\video\1\img1.jpg')   # 读取其中一张图片
img_info = img.shape
size = (img_info[1], img_info[0])       # 注意size的顺序
print(size)
# 写入对象创建 ,1s包括10张图片
video_write = cv2.VideoWriter(r'C:\Users\ADMIN\Pictures\video\1.mp4', -1, 10, size)
for i in range(1, 50):
    file_name = r'C:\Users\ADMIN\Pictures\video\1\img' + str(i) + '.jpg'
    img = cv2.imread(file_name, 1)
    video_write.write(img)
# 写入对象关闭
video_write.release()
print('end')

注意:写入的图片要和size大小一样,行列顺序调换。写入对象的原型为:
< VideoWriter object> = cv2.VideoWriter( filename, fourcc, fps, frameSize[, isColor] )
其中filename为目标视频存放路径和名字,fourcc视频编/解码类型(此参数的用法可自行搜索,网上很多),fps为帧速率,frameSize为每一帧的长和宽,isColor表示是否为彩色图像,默认为True。

三、视频读取、处理、保存

视频处理实质就是对组成视频的一些列帧进行处理,即图像处理,图像的一系列处理方法皆可用于处理视频,也可以说视频处理是图像处理的另一种形式上的应用。

import cv2
import numpy as np

cap = cv2.VideoCapture(r'E:\work\before.mp4')
# fourcc = cv2.VideoWriter_fourcc(*'DIVX')
out = cv2.VideoWriter(r'C:\Users\ADMIN\Videos\video\after.mp4', -1, 20, (1920, 1080))
# 读取视频帧并对其进行处理达到处理视频目的
while cap.isOpened():
    ret, image = cap.read()  # 读取帧`
    if ret ==True:
        img = cv2.Canny(image, 100, 200)  # 边缘监测图
        cv2.imshow('img', img)
        #print(image.shape)
        out.write(img)
        c = cv2.waitKey(1)  # 25
        if c == 27:
            break
    else:
        break
cap.release()
out.release()
cv2.destroyAllWindows()

PS: cv2.VideoWriter中的 fourcc参数据介绍将其设置为-1时,会弹出一个对话框,手动选择类型,经本人实验,设置为-1时没有对话框弹出,但不影响视频文件的生成。另外参数isColor设置为默认的Ture或手动设置为False也不影响视频文件的生成(因为cv2.Canny边缘检测结果为二值灰度图像)。文章来源地址https://www.toymoban.com/news/detail-729123.html

参考资料
  • https://blog.csdn.net/weixin_43718675/article/details/102026385
  • 李立宗 . opencv轻松入门:基于python.

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

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

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

相关文章

  • Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之五 简单指定视频某片段重复播放效果

    目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之五 简单指定视频某片段重复播放效果 一、简单介绍 二、简单指定视频某片段重复播放效果实现原理 三、简单指定视频某片段重复播放效果案例实现简单步骤 四、注意事项 Python是一种跨平台的计算机

    2024年04月12日
    浏览(97)
  • Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之六 简单指定视频某片段慢放效果

    目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之六 简单指定视频某片段慢放效果 一、简单介绍 二、简单指定视频某片段慢放效果实现原理 三、简单指定视频某片段慢放效果案例实现简单步骤 四、注意事项 Python是一种跨平台的计算机程序设计语言

    2024年04月14日
    浏览(56)
  • Python 基于 OpenCV 视觉图像处理实战 之 图像相关的基本概念,以及图像的基础操作 一

    目录 Python 基于 OpenCV 视觉图像处理实战 之 图像相关的基本概念,以及图像的基础操作 一 一、简单介绍 二、图像相关的一些基本概念 1、像素 2、图像的构成 3、图像的格式 4、图像的位深和通道 三、OpenCV 的一些基本图像处理函数介绍 1、读取一幅画图像 2、显示图像 3、输出

    2024年04月11日
    浏览(118)
  • python --opencv图像处理(图像腐蚀与图像膨胀)

    图像的腐蚀( Erosion )和膨胀( Dilation )是两种基本的形态学运算,主要用来寻找图像中的极大区域和极小区域。 又出来新名词了:形态学。 图像处理中指的形态学,往往表示的是数学形态学。数学形态学( Mathematical morphology ) 是一门建立在格论和拓扑学基础之上的图像

    2024年02月08日
    浏览(63)
  • 《数字图像处理-OpenCV/Python》连载:形态学图像处理

    本书京东 优惠购书链接 https://item.jd.com/14098452.html 本书CSDN 独家连载专栏 https://blog.csdn.net/youcans/category_12418787.html 形态学图像处理是基于形状的图像处理,基本思想是利用各种形状的结构元进行形态学运算,从图像中提取表达和描绘区域形状的结构信息。形态学运算的数学原

    2024年02月19日
    浏览(74)
  • Opencv+Python图像像素处理

    目录 二值图像的像素访问、修改 单个像素访问、修改  多个像素修改 彩色图像(三维数组) 像素访问、修改 BGR模式 像素访问、修改 单个像素访问、修改 打印结果:   多个像素修改 运行结果:  BGR模式 像素访问、修改 运行效果:    对于三维数组(BGR模式) img[0,3

    2024年02月12日
    浏览(48)
  • 《数字图像处理-OpenCV/Python》连载(41)图像的旋转

    本书京东优惠购书链接:https://item.jd.com/14098452.html 本书CSDN独家连载专栏:https://blog.csdn.net/youcans/category_12418787.html 几何变换分为等距变换、相似变换、仿射变换和投影变换,是指对图像的位置、大小、形状和投影进行变换,将图像从原始平面投影到新的视平面。OpenCV图像的几

    2024年02月05日
    浏览(54)
  • Python-OpenCV中的图像处理-图像轮廓

    轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度。轮廓在形状分析和物体的检测和识别中很有用。 为了更加准确,要使用二值化图像。在寻找轮廓之前,要进行阈值化处理或者 Canny 边界检测。 查找轮廓的函数会修改原始图像。如果你

    2024年02月13日
    浏览(63)
  • Python-OpenCV中的图像处理-图像梯度

    图像梯度,图像边界等 使用到的函数有: cv2.Sobel(), cv2.Scharr(), cv2.Laplacian() 等 原理:梯度简单来说就是求导。OpenCV 提供了三种不同的梯度滤波器,或者说高通滤波器: Sobel,Scharr 和 Laplacian。Sobel, Scharr 其实就是求一阶或二阶导数。 Scharr 是对 Sobel(使用小的卷积核求解

    2024年02月13日
    浏览(52)
  • Python-OpenCV中的图像处理-图像平滑

    使用低通滤波器可以达到图像模糊的目的。这对与去除噪音很有帮助。其实就是去除图像中的高频成分(比如:噪音,边界)。所以边界也会被模糊一点。(当然,也有一些模糊技术不会模糊掉边界)。 这是由一个归一化卷积框完成的。他只是用卷积框覆盖区域所有像素的平

    2024年02月13日
    浏览(55)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包