目录

  • 抖音视频闪烁原理
  • 实现抖音视频闪烁

抖音视频闪烁原理

在抖音视频的抖动过程中,我们还可以发现其视频的颜色曝光度都发生了一些变化,并不是单纯的只有抖动效果。所以,本篇将来实现视频的闪烁效果。

而图像闪烁的原理,其实说白了就是其曝光度的变化。在更改视频曝光度的之前,我们需要认识一个OpenCV中新的函数:cv2.LTU()。

LUT就是Look Up Table(颜色查找表)的缩写,简单点儿理解就是:通过LUT,我们可以将一组RGB值输出为另一组RGB值,从而改变画面的曝光与色彩。LUT文件就是一个包含了可以改变输入颜色信息的矩阵数据。LUT本身并不进行运算,只需在其中列举一系列输入与输出数据即可,这些数据呈一一对应的关系,系统按照此对应关系为每一个输入值查找到与其对应的输出值,这样即可完成转换。

了解其具体是干什么的之后,我们再来看看其函数的定义:

def LUT(src, lut, dst=None):

src:需要曝光的图像array,类型必须是np.uin8类型

lut:查找表,如果输入src是多通道的,例如是BGR三通到的图像,而查表是单通道的,则此时B、G、R三个通道使用的是同一个查找表

dst:曝光后返回的图像

可以看出来,cv2.LTU()函数可以将一组RGB值输出为另一组RGB值,而这映射的规则,由程序员自己制定。

这里,我们还需要了解Gamma变化。


简单的来说,Gamma变换就是用来图像增强,其提升了暗部细节,就是通过非线性变换,让图像从曝光强度的线性响应变得更接近人眼感受的响应,即将漂白(相机曝光)或过暗(曝光不足)的图片,进行矫正。

经过Gamma变换后的输入和输出图像灰度值关系如图1所示:横坐标是输入灰度值,纵坐标是输出灰度值,蓝色曲线是gamma值小于1时的输入输出关系,红色曲线是gamma值大于1时的输入输出关系。可以观察到,当gamma值小于1时(蓝色曲线),图像的整体亮度值得到提升,同时低灰度处的对比度得到增加,更利于分辩低灰度值时的图像细节。因此设置Gamme参数可以控制图像的曝光度,在0-1时会造成图像过度曝光。

实现抖音视频闪烁

了解了视频闪烁曝光的原理。下面,我们直接来实现其效果,具体代码如下所示:

#曝光图片
def exposure_effect(img, gamma):gamma_table = [np.power(x / 255.0, gamma) * 255.0 for x in range(256)]gamma_table = np.round(np.array(gamma_table)).astype(np.uint8)return cv2.LUT(img, gamma_table)if __name__ == "__main__":cap = cv2.VideoCapture("45.mp4")fps = cap.get(cv2.CAP_PROP_FPS)width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))i = 1count = 5fourcc = cv2.VideoWriter_fourcc(*'MJPG')videoWriter = cv2.VideoWriter("output.avi", fourcc, fps, (width, height))while (cap.isOpened()):ret, frame = cap.read()if ret:if (i % 5 == 0 or 0 < count < 5):frame = exposure_effect(video_shake_effect(frame), 0.5)videoWriter.write(frame)else:count = 5cv2.imshow('video', frame)videoWriter.write(frame)i += 1c = cv2.waitKey(1)if c == 27:breakelse:breakcap.release()videoWriter.release()cv2.destroyAllWindows()

这里,我们将前文的抖动与今天讲解的闪烁进行结合,最后观察其效果:

其中gamma_table = [np.power(x / 255.0, gamma) * 255.0 for x in range(256)]曝光度的算法,但其值有浮点数,而图像是不允许有浮点数存在的,所以通过np.round四舍五入,然后将其转换为LTU的第一个参数类型输入值。

实现抖音闪烁效果---OpenCV-Python开发指南(54)相关推荐

  1. 实现抖音霓虹灯效果---OpenCV-Python开发指南(55)

    目录 抖音霓虹灯原理 实现4个图片霓虹灯效果 实现视频霓虹灯效果 直接实现霓虹灯效果 抖音霓虹灯原理 抖音霓虹灯算法原理: 实时的光斑绘制,我们观察抖音霓虹的,你会发现所有的光斑都是圆形.所以,这里我 ...

  2. 实现抖音哈哈镜效果---OpenCV-Python开发指南(47)

    目录 前言 哈哈镜放大效果 哈哈镜缩小效果 直接视频实现哈哈镜效果 前言 在抖音中,我们经常看到各种抖音玩家都喜欢使用哈哈镜效果.那么什么是哈哈镜呢? 在现实生活中,哈哈镜是指一种表面凹凸不平的镜子, ...

  3. shell date 日期格式化_抖音短视频系统开发,日期加减

    let dateTime=new Date(); this.dateFomat是对日期格式化为 yyyy - mm - dd的格式 // 减一天 dateTime = dateTime.setDate ...

  4. Python开发指南[1]之程序员计时小时钟(附源码)

    Python开发指南[1]之程序员计时小时钟 程序之美 前言 主体 运行效果 核心代码 逻辑分析 结束语 程序之美 前言 Python作为一门编程语言,这门语言的魅力和影响力已经远超C#.C++等编程 ...

  5. 从微信小程序到抖音小程序:转换指南

    抖音小程序是一种新兴的小程序平台,与微信小程序类似,都是基于小程序框架的开发,不过两者的开发环境和API有所不同.如果你已经开发了一款微信小程序,想要将其转换为抖音小程序,可以按照以下步骤进行: 1. ...

  6. IOS抖音短视频APP开发关于扫描二维码,并根据文本生成二维码

    IOS抖音短视频APP开发关于扫描二维码,(根据光线强弱显示隐藏闪光灯)并根据文本生成二维码. WeakSelf; //IOS抖音短视频APP开发构建扫描样式视图 _scanView = [[WSLS ...

  7. 抖音短视频APP开发如何生成二维码?

    授权转载自云豹网络科技的CSDN博客 原文链接:https://blog.csdn.net/yb1314111/article/details/101283985 IOS抖音短视频APP开发关于扫描二 ...

  8. 抖音seo源码,抖音搜索排名,抖音账号矩阵程序开发搭建,抖音seo搜索技术研发搭建部署

    抖音seo源码,抖音搜索排名,抖音账号矩阵程序开发搭建,抖音seo搜索技术研发搭建部署 抖音seo搜索逻辑,作为技术开发公司,我们在在抖音开放平台需要完成注册--申请系统服务商---入驻---关联应用 ...

  9. 抖音seo源码开发代码分享

    抖音seo优化,抖音seo源码开发,抖音排名系统源码开发展示实例: 思路:抖音seo源码,抖音seo矩阵系统底层框架上支持了从ai视频混剪,视频批量原创产出,云存储批量视频制作,账号矩阵,视频一键分发 ...

  10. 抖音APP数据python爬虫——个人粉丝视频

    抖音APP数据python爬虫--个人粉丝视频 学习分享,勿触底线. 最近有改进了,之前获取_signature参数的方式有点low.现在用pm2部署一下node接口美滋滋. 代码就不放了,可以去最后 ...

最新文章

  1. Python判断两个文件夹中互相不同的文件有哪些、判断一个文件夹相对于另外一个文件夹缺少了哪些文件
  2. self attentin Q K V心得
  3. 雷林鹏分享:PHP 简介
  4. java程序设计第一次作业
  5. 阿里云服务器重启出现An error occurred 如何处理
  6. [转]一个老工程师给年轻工程师的忠告
  7. python魔法方法与函数_在Python中画图(基于Jupyter notebook的魔法函数)
  8. 米斯特白帽培训讲义(v2)漏洞篇 Web 中间件
  9. ShellExecuteA URLDownloadToFileA
  10. 原子结构示意图全部_所有原子结构示意图 元素周期表
  11. mxh缩写英语_mxh的含义,mxh是什么的缩写,mxh的词语,mxh代表的意思
  12. android设置闹钟日期,在Android中将闹钟设置为特定日期和时间
  13. 数字舵机与模拟舵机_控制方法与性能比较
  14. 每日一题系列:考拉有n个字符串,任意两个字符串长度都是不同的。考拉最近学习到两种字符串的排序方法
  15. 计算机专业男人喜欢什么样的女人,说实在的,其实男人真正喜欢的女人,就三个特征...
  16. IM推送Android客户端SDK之智能心跳
  17. 网易python笔试题_2017秋季网易校园招聘编程题和个人解答(python)
  18. OpenCV VideoWriter报错: FFMPEG: tag ‘MP4V‘ is not supported with codec id 12 and format mp4解决方法
  19. 众多跑车壁纸素材一键即可获取
  20. 定义一个动物类java_Java问题利用接口继承完成对生物、动物、人三个接口的定义,其中生物接口定义呼吸抽象方法,动物接口定义了吃饭和睡觉两个抽...

热门文章

  1. CAD图纸怎么保存为PDF?几个步骤轻松掌握
  2. Linux 安装 MySQL 8.0 并配置远程登录
  3. DWI_preprocessing DTI_reduce commands
  4. android 输入法,里面还集成语音输入
  5. 一条命令修复机械硬盘,提示需要格式化
  6. 概率论基础 —— 3.离散型、连续型概率模型,及其概率密度与概率分布函数
  7. 周志华机器学习(一)
  8. python画双坐标图_Python双Y轴可视化
  9. [AV1] AV1 Reference Software
  10. JSON与事件和BOM