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帧图片breakelse:i += 1(flag, frame) = cap.read()file_name = 'img' + str(i) + '.jpg'file_path = r'C:\Users\ADMIN\Pictures\video\1' + os.sep + file_nameif 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 npcap = 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)  # 25if c == 27:breakelse:break
cap.release()
out.release()
cv2.destroyAllWindows()

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

参考资料

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/319.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

密码学证明方案寒武纪大爆发——扩容、透明性和隐私的变革潜力

1. 引言 前序博客有&#xff1a; ZKP大爆炸 本文主要参考&#xff1a; StarkWare 2023年6月博客 Cambrian Explosion of Cryptographic Proofs----The transformative potential for scalability, transparency, and privacy2023年3月Eli Ben-Sasson在The 13th BIU Winter …

nginx页面优化与防盗链

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、nginx页面优化1.版本号1.1 查看版本号1.2 修改版本号1.2.1 修改配置文件1.2.2 修改源码文件&#xff0c;重新编译安装 2.nginx的日志分割3.nginx的页面压缩3.1 …

微软亚洲研究院推出AI编译器界“工业重金属四部曲”

编者按&#xff1a;编译器在传统计算科学中一直是一个重要的研究课题。在人工智能技术快速发展和广泛应用的今天&#xff0c;人工智能模型需要部署在多样化的计算机硬件架构上。同时&#xff0c;训练和部署大型人工智能模型时又对硬件性能有着更高的要求&#xff0c;有时还需根…

macOS Ventura 13.5beta5(22G5072a)发布

系统介绍 黑果魏叔 7 月 11 日消息&#xff0c;苹果今日向 Mac 电脑用户推送了 macOS 13.5 开发者预览版 Beta 5 更新&#xff08;内部版本号&#xff1a;22G5072a&#xff09;&#xff0c;本次更新距离上次发布隔了 12 天。 macOS Ventura 带来了台前调度、连续互通相机、Fa…

hdfs中的租约机制及Flink写hdfs文件未关闭

在HDFS中&#xff0c;租约机制是用来管理文件的写入和编辑操作的一种机制。租约机制包括主租约和副租约两种类型。 主租约是由文件的创建者持有的&#xff0c;它控制着文件的写入和编辑权限。创建者在写入或编辑文件时&#xff0c;需要先获取主租约。一旦获取到主租约&#xff…

js(七)this

1、this的五种情况 this执行主体&#xff0c;谁把它执行的「和在哪创建&在哪执行都没有必然的关系」 函数执行&#xff0c;看方法前面是否有“点”&#xff0c;没有“点”&#xff0c;this是window「严格模式下是undefined」&#xff0c;有“点”&#xff0c;“点”前面是…

1g的视频怎么做二维码?较大视频如何生成二维码?

现在很多参与评选活动时&#xff0c;会制作好相关的视频内容&#xff0c;然后生成二维码之后&#xff0c;发送给活动管理人员从而参与评选。在根据要求录制视频时&#xff0c;有些视频会因为时间太长&#xff0c;导致文件过大&#xff0c;那么如何将超过1g的等视频生成二维码&a…

基于DEF生成LIB的方法

基于DEF生成LIB的方法 [生成64位lib] lib /def:libcurl-x64.def /MACHINE:x64 /OUT:libcurl-x64.lib[生成32位lib] lib /def:libcurl-x64.def /OUT:libcurl-x64.lib

物联网的技术架构及应用层是什么?

物联网的技术架构包括感知层、网络层、平台层和应用层。 感知层是物联网的第一层&#xff0c;它的主要功能是收集各种数据和信息。感知层可以通过各种传感器和执行器来收集物品的数据和信息&#xff0c;例如温度、湿度、位置、重量等等。感知层还需要考虑如何实现低功耗、低成…

OpenCV 图像处理算法和技术的应用实践

OpenCV 图像处理算法和技术的应用实践 导语一、图像滤波算法二、图像分割技术三、特征提取与描述算法四、实践示例&#xff1a;图像风格转换总结 导语 图像处理算法和技术在计算机视觉和图像处理领域发挥着重要作用&#xff0c;通过对图像进行分析、增强和转换&#xff0c;可以…

c#调用vtk显示dicom序列

public static void test2() { // 创建 DICOM 阅读器 vtkDICOMImageReader reader vtkDICOMImageReader.New(); //小端字节 reader.SetDataByteOrderToLittleEndian(); reader.SetDirectoryName("D…

2023机器人操作系统(ROS)暑期学校预热-线下时间/地点-(转发)

原文地址&#xff1a; https://mp.weixin.qq.com/s/McjBgCpecL6OMgpcrPyY_Q 中国机器人操作系统&#xff08;ROS&#xff09;暑期学校自2015年举办以来&#xff0c;被中国机器人业界和学界&#xff0c;以及ROS开源基金会誉为除了ROSCon之外规模最大、参与人数最多、最成功的RO…

什么是Heatmap(热图)图表?用DHTMLX可实现快速构建

DHTMLX Chart是DHTMLX最新发布的JavaScript UI小部件库的核心内容之一&#xff0c;这个图表小部件收到了几个重要的更新&#xff0c;但其中最引人注目的是一个新的数据可视化选项——日历热图。 DHTMLX专注于JavaScript和HTML5 UI小部件和库&#xff0c;以帮助开发人员更快地构…

基于springboot+vue的疫情管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

不外传秘诀| docker 快速搭建常用的服务环境

本文主要给大家介绍如何使用 docker 搭建常用的服务环境&#xff0c; 包括mysql,reedis,nginx,jenkins 等常用的环境&#xff0c;下面直接进入主题。 1、MySQL 部署 ①搜索 MySQL 镜像 docker search mysql ②拉取 MySQL 镜像 docker pull mysql:5.7 ③创建容器&#xf…

基于STM32单片机的智能家居烟雾温度火灾防盗报警的设计与实现

功能介绍 以STM32单片机作为主控系统&#xff1b;LCD1602液晶显示屏来显示显示测得的值&#xff1b;SR501人体红外感应是否有人进行防盗&#xff1b;通过烟雾传感器MQ-2获取前的烟雾值&#xff1b;通过DHT11温湿度传感器来获取当前的温湿度&#xff1b;所有的信息通过通过esp82…

php通过IP获取用户当前所在城市

php获取当前用户所在城市 php通过ip免申请api获取所在城市的代码包括省市区sql数据 <?php function getName($pinyin,$lv){$servername "localhost";$username "root";$password "root";$dbname "ttx";try {$conn new PDO(…

机器学习15:神经网络-Neural Networks

神经网络是特征交叉的更复杂版本。本质上&#xff0c;神经网络会学习适当的特征组合。本文主要介绍神经网络的结构、隐藏层、激活函数等内容。 目录 1.神经网络&#xff1a;结构 2.隐藏层 3.激活函数 3.1 常用激活函数 3.2 小结 4.神经网络小练习 4.1 第一个神经网络 …

Jina AI 受邀出席 WAIC 2023「科技无障碍」论坛,与行业专家共话 AI 普惠未来

7 月 6 日&#xff0c;2023 世界人工智能大会&#xff08;WAIC&#xff09;在上海世博中心及世博展览馆开幕&#xff0c;并在浦东张江、徐汇西岸设分会场&#xff0c;同步在闵行等产业集聚区开展同期活动。本届大会由上海市人民政府和国家发改委、工信部、科技部、国家网信办、…

基于JSP+Servlet的医药药品管理系统

用户类型&#xff1a;双角色角色&#xff08;患者、管理员[医生]&#xff09; 设计模式&#xff1a;MVC&#xff08;jspservletjavabean) 项目架构&#xff1a;B/S架构 开发语言&#xff1a;Java语言 主要技术&#xff1a;jsp、servlet、jdbc、jsp、html5、jquery、css、js…