使用python的视频处理

article/2025/9/19 12:35:57

本文探讨的是使用python对视频进行如下操作:

  1. 将待处理的视频分割成帧
  2. 对每一帧进行处理
  3. 对处理后的帧合并
  4. 得到最终的视频

为了方便接下去的实验过程,读者必须具备如下的工具:

1、依赖包python-opencv

2、借助工具ffmpeg

import cv2
import subprocess
#在使用时使用以上代码引入模块

分割视频的代码如下:

import os
import cv2
import subprocessos.chdir(r'C:\Users\Bryce gu\Desktop\movie')
v_path='test.mp4'
image_save='./pic'cap=cv2.VideoCapture(v_path)
frame_count=cap.get(cv2.CAP_PROP_FRAME_COUNT)for i in range(int(frame_count)):_,img=cap.read()img=cv2.cvtColor(img,cv2.cv2.COLOR_BGR2GRAY)   #cv2.COLOR_RGB2HSV     cv2.COLOR_BGR2GRAYcv2.imwrite('./pic/image{}.jpg'.format(i),img)# In[8]:print(dir(cv2))

实验结果如图所示(注意要放在一个既定文件夹里):

可见,将一个完整的短视频分割成了各个帧。


ffmpeg是一个非常牛的软件!具备了以下的诸多功能:

  1. 基本信息查询命令
  2. 录制命令
  3. 分解、复用命令
  4. 处理原始数据命令
  5. 裁剪与合并命令
  6. 图片、视频互转命令
  7. 直播相关命令
  8. 各种滤镜命令

1.视频裁剪滤镜(播放器大小裁剪): 
ffmpeg -i killer.mp4 -vf crop=in_w-200:in_h-200 -c:v libx264 -c:a copy out.mp4
2.视频裁剪(按时间裁剪): 
ffmpeg -i my.mp4 -ss 00:43:20 -t 00:02:10 -acodec copy -vcodec copy sha.mp4
3.视频拼接: 
ffmpeg -f concat -i input.txt concat_out.mp4
(input.txt内部是文件列表,格式是: file 'fileName’
4.视频转图片命令: 
ffmpeg -i 1.ts -r 1 -f image2 result-image/image-%3d.jpeg
5.图片转视频:
ffmpeg -i image-%3d .jpeg -out.mp4ffmpeg录屏命令
ffmpeg -f avfoundation -i 1 -r 30 out.yuv
-f: 指定使用avfoundation采集数据
-i: 指定从哪儿采集数据,它是一个文件索引号
-r:指定帧率
播放录屏的命令: ffplay -s 2880X1800 -pix_fmt uyvy422 out.yuv
-s: 指定分辨率
-pix_fmt :录制时的格式
查看支持的设备列表:ffmpeg -f avfoundation -list_devices true -i ""
录音命令:ffmpeg -f avfoundation -i :0 out.wav

以上列出了一些常用的、常见的命令,仅供参考。

而在本实验中使用的是视频拼接命令,将所有刚才切好的帧再次合并。(当然读者可以先在处理好的图片中做加工处理,再做合并。)

在完成后,可以在ffmpeg/bin文件夹里找到合并好的视频:


多媒体格式转换

已经介绍了,ffmpeg具有多媒体格式转换的功能,这类似于pr或是macos系统上的finalcut的一些功能,同样,笔者给出一些代码,读者可以自行尝试:

ffmpeg -i out.mp4 -vcodec copy -acodec copy out.flvi:输入文件
vcodec copy:视频编码处理方式
acodec copy:音频编码处理方式只抽取视频:ffmpeg -i out.mp4 -an -vcodec copy out.h264
只抽取音频:ffmpeg -i out.mp4 -acodec copy -vn out.aacffmpeg提取YUV数据
ffmpeg -i input.mp4 -an -c:v rawvedio -pix_fmt uyv420p out.yuvffmpeg 提取PCM数据
ffmpeg -i input.mp4 -vn -ar 44100 -ac2 -f s16le out.pcm

三种图像处理的例子(读者在切下来的图片中自行尝试)

1、RGB2HSV

cv2.cvtColor(image,cv2.COLOR_RGB2HSV)


2、直方图均衡

return cv2.equalizeHist(img)


3、高斯模糊+边缘检测

img = cv2.GaussianBlur(img,(3,3),0)
canny=cv2.Canny(img,50,150)


持续更新中……


http://chatgpt.dhexx.cn/article/qCcSVxSy.shtml

相关文章

VideoProc v4.4 多功能视频处理工具

前言 VideoProc是WinX/MacX HD Video Converter Deluxe的进阶版本,在功能上更上一层。VideoProc全方位整合了影片转档、影片压缩、(YouTube)影片下载、影片剪辑的功能,使你在Windows上管理不同的多轨道、SD、HD、4K影片的绝佳方案…

视频分类Video-Swin-Transformer

视频分类Video-Swin-Transformer 视频分类Video-Swin-Transformer 视频分类Video-Swin-Transformer前言一、Video-Swin-Transformer二、环境安装三、数据预测四、对源码进行更改五、总结六、参考资料 前言 提示:这里可以添加本文要记录的大概内容: 星光…

Python - MoviePy 处理音视频

文章目录 一、关于 MoviePy相关教程安装工作原理 二、音频获取音频信息切割拼接音频叠加音频循环播放格式转换视频提取音频 三、视频获取视频信息预览视频视频/Gif 提取图片图片生成视频 / gif图片 音乐合成视频视频提取 gif视频添加文字视频拼接 concatenate_videoclips堆叠 …

音视频处理

问题背景:h265格式的视频转码之后ios存在兼容问题 原转码命令: /usr/local/bin/ffmpeg -y -i /data/tmp/1672385812000-tks3wa.mp4 -vf scale720:1281 -r 30 /data/tmp/1672385812000-tks3wa_720.mp4 -hide_banner解决办法: // 原视频格式为…

tune a video:one-shot tuning of image diffusion models for text-to-video generation

【Diffusion Models】新加坡国立大学、腾讯强强联手Tune-A-Video:One-Shot微调图像扩散模型用于文本到图像的生成!_哔哩哔哩_bilibili【Diffusion Models】新加坡国立大学、腾讯强强联手Tune-A-Video:One-Shot微调图像扩散模型用于文本到图像…

视频 处理

案例 Fu Xianjun. All Rights Reserved. 一.视频信号 视频信号(以下称为视频)是非常重要的视频信息来源,它是信息处理过程中经常要处理的一类信号。实际上,视频是由一系列图像构成的。这一系列图像被称为帧,帧是以固定…

用Python剪辑视频?太简单了

人生苦短,快学Python! 最近我在网上下载一个视频,结果下载到本地是近百个视频片段,为了方便观看只能将这些片段合并为一个视频整体。 不过我并没有搜到能够处理类似情况的小工具,只是发现剪映等软件可以实现视频合并功…

图片与视频的处理

1.首先需要在mac上安装ffmpeg(参考社区的安装教程) 需要先安装drew 然后再安装ffmpeg 2.使用dlib工具进行人脸识别,获取特征点,并输出人脸坐标 import cv2 import dlib import numpy as np import matplotlib.pyplot as pltpat…

基本全局阈值处理

基本全局阈值处理 1、全局阈值处理 (1)计算步骤 通常,在图像处理中首选的方法是使用一种能基于图像数据自动地选择阈值的算法,为了自动选阈值,下列迭代过程采用的就是这样的方法: (1) 针对全局阈值选择初…

基本的全局阈值处理Otsu方法进行最佳全局阈值处理

前言 图像阈值处理在图像分割中处于核心地位!本节将重点介绍一些常见的阈值处理方法。 一、基本的全局阈值处理 选取阈值往往是通过直方图来选择的,一方面我们可以人为的设置一个阈值进行一次二值化处理达到全局阈值处理的目的,但这样的阈值…

阈值调整

1.不平衡分类问题的阈值调整 如上图所示,正负例样本不平衡,负样本多,分类器就会更容易把图片分成负样本,因此要设置阈值, 如何选择阈值: 1.ROC曲线上的最优阈值 2.PR曲线上的最优阈值

神经网络阈值是什么意思,神经网络阈值如何确定

BP神经网络中初始权值和阈值的设定 1、首先需要了解BP神经网络是一种多层前馈网络。2、以看一下在matlab中BP神经网络的训练函数,有梯度下降法traingd,弹性梯度下降法trainrp,自适应lr梯度下降法traingda等。 3、在matlab中命令行窗口中定义输入P&…

图像的阈值处理

一般情况下,一张图片分为前景和背景,我们感兴趣的一般的是前景部分,所以我们一般使用阈值将前景和背景分割开来,使我们感兴趣的图像的像素值为1,不感兴趣的我0,有时一张图我们会有几个不同的感兴趣区域&…

神经网络阈值是什么意思,神经网络的权值和阈值

神经网络权值怎么确定? 神经网络的权值是通过对网络的训练得到的。如果使用MATLAB的话不要自己设定,newff之后会自动赋值。也可以手动:{};{}。一般来说输入归一化,那么w和b取0-1的随机数就行。 神经网络的权值确定的目的是为了让…

opencv c++ 二值图像、阈值计算方法、全局阈值、自适应阈值

1、图像定义: 彩色图像 :三通道,像素值一般为0~255; 灰度图像:单通道,像素值一般为0~255; 二值图像:单通道,像素值一般为0(黑色)、255&#xff08…

图像分割 - 阈值处理 - 全局阈值处理

目录 1. 介绍 2. 代码实现 3. 代码讲解 1. 介绍 当目标和背景像素的灰度分布非常不同的时候,可以对整个图像使用全局阈值 在大多数的应用中,图像之间通常存在足够的变化,全局阈值是一种合适的办法。所以,需要一种对图像做阈值…

硬阈值 软阈值

1 定义 1.1 硬阈值 硬阈值的定义如下: 相当于 1.2 软阈值 软阈值的定义如下: 相当于 1.3 二者对比(可视化解释) 这是一张很经典地表述软阈值和硬阈值区别的图,其中软阈值是蓝色的线,他没有突变&#xff1…

神经网络阈值是什么意思,神经网络阈值怎么设置

BP神经网络中初始权值和阈值的设定 1、首先需要了解BP神经网络是一种多层前馈网络。2、以看一下在matlab中BP神经网络的训练函数,有梯度下降法traingd,弹性梯度下降法trainrp,自适应lr梯度下降法traingda等。 3、在matlab中命令行窗口中定义输入P&…

图像处理--阈值处理

图像二值化 图像二值化就是将图像上的像素点的灰度值设置为两个值,一般为0(表示黑色)和255(表示白色),可以将整个图像呈现出明显的黑白效果。 最常用的方法就是先将图像灰度处理,然后设定一个阈…

两种划分阈值的方法

风险等级划分的时候可以降低主观性的一些系统方法 方法一:分层聚类法 凝聚层次聚类/分裂层次聚类 重点:确定层次聚类的簇数,画出树状图,基本就能得到你的区间范围,但数据量大的时候还是得再用代码跑 方法二&#xf…