前言

处理视频滤镜之前,需要先掌握图片滤镜的处理,如何将一张夜景图片修改为赛博朋克的风格?

视频滤镜

夜景素材

渲染效果

Python 代码

import ffmpeg

import numpy as np

import os

from image.cyber import cyberpunk

import cv2

if __name__ == '__main__':

# 源视频

video_path = 'night.mp4'

video_probe = ffmpeg.probe(video_path)

video_info = next((stream for stream in video_probe['streams'] if stream['codec_type'] == 'video'), None)

video_frames = int(video_info['nb_frames'])

width = int(video_info['width'])

height = int(video_info['height'])

video_input = ffmpeg.input(video_path)

in_process = (

video_input.video.output('pipe:', format='rawvideo', pix_fmt='rgb24', r=30).run_async(pipe_stdout=True)

)

# 滤镜视频流

tmp_path = 'night_tmp.mp4'

tmp_process = (

ffmpeg

.input('pipe:', format='rawvideo', pix_fmt='rgb24', s='{}x{}'.format(width, height), framerate=30)

.output(tmp_path, pix_fmt='yuv420p', r=30)

.overwrite_output()

.run_async(pipe_stdin=True)

)

frame_index = 1

# 视频帧处理

while True:

in_bytes = in_process.stdout.read(width * height * 3)

if not in_bytes:

break

in_frame = (

np

.frombuffer(in_bytes, np.uint8)

.reshape([height, width, 3])

)

# 渐变式局部滤镜视频,过渡时间 5 秒,帧率为 30,则此处设置的值为 150

in_frame_bgr = cv2.cvtColor(in_frame, cv2.COLOR_RGB2BGR)

current_width = int(width * (frame_index / 150))

in_frame_bgr[:, 0:current_width, :] = cyberpunk(in_frame_bgr[:, 0:current_width, :])

in_frame = cv2.cvtColor(in_frame_bgr, cv2.COLOR_BGR2RGB)

tmp_process.stdin.write(

in_frame

.astype(np.uint8)

.tobytes()

)

if frame_index < 150:

frame_index += 1

# 等待异步处理完毕

tmp_process.stdin.close()

in_process.wait()

tmp_process.wait()

# 将原始视频的音乐合并到新视频

result_path = 'night_new.mp4'

(

ffmpeg.input(tmp_path)

.output(video_input.audio, result_path, r=30)

.run(overwrite_output=True)

)

# 删除临时文件

os.remove(tmp_path)

素材下载

python 视频滤镜_Python 视频处理:滤镜之赛博朋克相关推荐

  1. python实现图片加滤镜_Python 实现简单滤镜

    在这个人人自拍的年代,每个人的智能手机中至少都装了一款美颜相机或者美图软件,而这些软件实现美图功能又主要是靠滤镜来实现的.而这个项目使用 Python 编写一个简单的滤镜程序. 效果截图 先来展示一下 ...

  2. python 视频滤镜_Python实现PS滤镜功能之波浪特效示例

    本文实例讲述了Python实现PS滤镜功能之波浪特效.分享给大家供大家参考,具体如下: 这里用 Python 实现 PS 滤镜的波浪特效,具体效果可以参考附录说明 import numpy as np ...

  3. python语言编程基础视频_网络编程-5_ Python系列视频(一)——Python语言基础_Python视频-51CTO学院...

    通过学习,对Python有一定的了解,学习Python语法,可以使用Python原生语言开发项目.对于Python的应用于开发有一个系统的认知,对于未来的发展方向有清晰的认识.主要知识点包括基本语法. ...

  4. python 艺术照片滤镜_Python实现PS滤镜Fish lens图像扭曲效果示例

    本文实例讲述了Python实现PS滤镜Fish lens图像扭曲效果.分享给大家供大家参考,具体如下: 这里实现 PS 滤镜中的一种几何变换– Fish lens, 对图像做扭曲,感觉就像通过一个凸镜 ...

  5. python图片马赛克_Python实现PS滤镜中马赛克效果示例

    本文实例讲述了Python实现PS滤镜中马赛克效果.分享给大家供大家参考,具体如下: 这里利用 Python 实现PS 滤镜中的马赛克效果,具体的算法原理和效果可以参考附录说明,Python示例代码如 ...

  6. 51cto学院mysql_Mysql -1_ Python系列视频(一)——Python语言基础_Python视频-51CTO学院...

    通过学习,对Python有一定的了解,学习Python语法,可以使用Python原生语言开发项目.对于Python的应用于开发有一个系统的认知,对于未来的发展方向有清晰的认识.主要知识点包括基本语法. ...

  7. python传输视频文件_Python视频传输

    ubuntu16.04+python2+opencv (一) 开发前的准备工作 sudo apt-get install python-pip pip install numpy pip instal ...

  8. python卡通滤镜_python 实现波浪滤镜特效

    本文用 Python 实现 PS 滤镜的波浪特效RXW免费资源网 import numpy as np from skimage import img_as_float import matplotl ...

  9. python下载神器_python 视频下载神器(you-get)的具体使用

    you-get是github上python的一个开源库(https://github.com/soimort/you-get),使用you-get你只需要取得视频所在网页链接地址就可以很轻松的下载下来 ...

最新文章

  1. firefox下的调试工具
  2. paper 38 :entropy
  3. 判断远程图片是否存在的JavaScript代码
  4. (原創) 如何讀取/寫入文字檔? (IC Design) (Verilog)
  5. django-删除学生数据
  6. 华为云专线接入方案介绍
  7. 3. beanstalkd
  8. webpack最新版本_【每日面经】字节跳动、美团点评、360最新面经速递!
  9. 学生选课系统代码-3mode【DB】视图层代码【MVC--M】代码
  10. latex数学符号加粗_LaTex数学公式符号整理
  11. LBP特征详细原理-python代码复现
  12. 小米路由器青春版(R1CL)刷breed固件
  13. 京东方高级副总裁姜幸群:AIoT技术赋能企业物联网转型
  14. 法国语言学校c1,法国留学的语言要求是什么?
  15. 使用Aspose在Java中将Excel文件转换为HTML
  16. 邮箱退信提示:“recipient does not have an account.”
  17. node、express框架
  18. Mybatis动态创建表
  19. 软件加密系统Themida应用程序保护指南(一):应用信息界面
  20. ARM接口实验—中断实验

热门文章

  1. pandas提取数据框其中几列生成新数据框
  2. #765372#基于django和neo4j的通用数据展示系统
  3. 银联董事长邵伏军:数字货币出现后,支付清算机构能否存在
  4. Android视频编辑器(五)音频编解码、从视频中分离音频、音频混音、音频音量调节等
  5. 蓝鲸智云实现虚拟机交付(一)
  6. BesLyric 全新版本下载 ( windows \ mac \ linux )
  7. GNU-gcc/g++工具链--c++filt(c++符号解读器)
  8. 数据预处理的几种方法
  9. 【Vue】路由传参方式
  10. 设计模式七大原则——迪米特原则