实现抖音霓虹灯效果---OpenCV-Python开发指南(55)
目录
- 抖音霓虹灯原理
- 实现4个图片霓虹灯效果
- 实现视频霓虹灯效果
- 直接实现霓虹灯效果
抖音霓虹灯原理
抖音霓虹灯算法原理:
- 实时的光斑绘制,我们观察抖音霓虹的,你会发现所有的光斑都是圆形。所以,这里我们会使用cv2.circle()函数负责绘制霓虹圆形效果。
- 设计多幅素材图片,黑底上面有亮色的光斑,不同的图片中光斑的位置不同。
算法原理简单点翻译就是:加载视频,每间隔1帧在图像绘制光斑,一共定义4种光斑的位置,循环在视频中进行渲染。
实现4个图片霓虹灯效果
一般来说霓虹灯的效果都在视频的上下左右的边缘。为了让读者更加的通俗易懂一点,我们先来实现4个角的霓虹灯效果。
具体代码如下所示:
# 图片霓虹等效果
def img_neon_effetc(img, x, y, filenameSize):cv2.circle(img, (x, y), 20, (114, 128, 250), -1)cv2.circle(img, (x + 40, y - 40), 20, (153, 255, 102), -1)cv2.circle(img, (x + 80, y + 40), 20, (15, 254, 123), -1)cv2.circle(img, (x + 60, y), 20, (238, 169, 184), -1)cv2.imwrite("55_" + filenameSize + ".jpg", img)if __name__ == "__main__":img = cv2.imread("55.jpg")img1=img.copy()height, width, n = img.shapeimg_neon_effetc(img1, int(width * 0.1), int(height * 0.1), "1")img1 = img.copy()img_neon_effetc(img1, int(width * 0.1), int(height * 0.9), "2")img1 = img.copy()img_neon_effetc(img1, int(width * 0.9), int(height * 0.1), "3")img1 = img.copy()img_neon_effetc(img1, int(width * 0.9), int(height * 0.9), "4")
运行之后,会得到4个文件,效果如下:
实现视频霓虹灯效果
既然有了上述4个霓虹灯模板,相信读者应该知道要做什么了吧?没错,使用开始博文制作鬼影的函数cv2.addWeighted()函数进行图像加权和。
完整的霓虹灯代码如下所示:
#视频霓虹灯效果
def video_neon_effect(img, cnt):if cnt == 0:return imgheight, width, n = img.shapemask = {1: cv2.imread("55_1.jpg"),2: cv2.imread("55_2.jpg"),3: cv2.imread("55_3.jpg"),4: cv2.imread("55_4.jpg"),}mask[cnt] = cv2.resize(mask[cnt], (width, height), interpolation=cv2.INTER_CUBIC)new_img = cv2.addWeighted(img, 0.7, mask[cnt], 0.3, 0)return new_imgif __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 = 1fourcc = cv2.VideoWriter_fourcc(*'MJPG')videoWriter = cv2.VideoWriter("output.avi", fourcc, fps, (width, height))while (cap.isOpened()):ret, frame = cap.read()if ret:frame = video_neon_effect(frame, i % 5)cv2.imshow('video', frame)videoWriter.write(frame)i += 1c = cv2.waitKey(1)if c == 27:breakelse:breakcap.release()videoWriter.release()cv2.destroyAllWindows()
运行之后,效果如下:
这里,你可以先将霓虹灯图像进行压缩,然后通过cv2.resize()函数将图片变更为视频的大小后,再进行加权和计算。实际的操作中,你还需要根据视频的帧数进行霓虹灯的设计操作,这里为了简便,小编只用了4张。
直接实现霓虹灯效果
上面我们是通过图片加权和进行霓虹灯效果的实现,但是是不是觉得跟抖音有点差距呢?这里,我们直接用代码实现霓虹灯,不用任何中间的操作,具体步骤如下:
- 随机生成一个霓虹灯图片,上面绘制了许多圆形。
- 记住这些圆形的位置信息,后面霓虹灯的变更更改其圆形颜色即可。
具体代码如下所示:
# 创建霓虹灯的圆
def create_neon_circle():mask = np.zeros((576, 1024, 3), dtype=np.uint8)circle_list = []height, width, n = mask.shapefor i in range(0, width, 50):for j in range(0, height, 50):r = random.randint(0, 255)g = random.randint(0, 255)b = random.randint(0, 255)x = i + random.randint(0, 90)y = j + random.randint(0, 90)cv2.circle(mask, (x, y), 20, (r, g, b), -1)circle_list.append((x, y))cv2.imwrite("55_1.jpg", mask)return circle_list, mask# 霓虹灯效果2
def video_neon_effect2(img, circle_list):height, width, n = img.shapemask = np.zeros((height, width, n), dtype=np.uint8)for x, y in circle_list:r = random.randint(0, 255)g = random.randint(0, 255)b = random.randint(0, 255)cv2.circle(mask, (x, y), 20, (r, g, b), -1)new_img = cv2.addWeighted(img, 0.7, mask, 0.3, 0)return new_img,maskif __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 = 1fourcc = cv2.VideoWriter_fourcc(*'MJPG')videoWriter = cv2.VideoWriter("output.avi", fourcc, fps, (width, height))circle_list, img = create_neon_circle()while (cap.isOpened()):ret, frame = cap.read()if ret:frame = cv2.addWeighted(frame, 0.7, img, 0.3, 0)if i % 7 == 0:frame ,img= video_neon_effect2(frame, circle_list)cv2.imshow('video', frame)videoWriter.write(frame)i += 1c = cv2.waitKey(1)if c == 27:breakelse:breakcap.release()videoWriter.release()cv2.destroyAllWindows()
运行之后,效果如下:
这里霓虹灯有些多,读者可以自己设置for循环的边界,比如只在屏幕顶端有霓虹灯效果,可以直接将For循环的高度缩小到顶部区域即可。如果觉得圆圈不好看,也可以设置绘制椭圆等。
实现抖音霓虹灯效果---OpenCV-Python开发指南(55)相关推荐
- 干货 | 抖音漫画效果解密
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:AI算法与图像处理 抖音漫画效果 要说最近抖音最火的效果 ...
- 抖音SEO排名优化源代码开发搭建技术分析
抖音seo优化排名获客系统,抖音SEO系统源码开发,思路,给大家日常分享一些抖音seo源码的部署开发,抖音seo程序开发是目前很多开发公司都在搭建的系统.... 一套优秀的抖音seo短视频获客系统,支 ...
- 基于android的高仿抖音,Android仿抖音列表效果
本文实例为大家分享了Android仿抖音列表效果的具体代码,供大家参考,具体内容如下 当下抖音非常火热,是不是也很心动做一个类似的app吗? 那我们就用RecyclerView实现这个功能吧,关于内存 ...
- 抖音seo源码.源代码开发可二开搭建/抖音seo优化系统代开发
抖音seo源码源代码开发可二开搭建, 抖音seo源码,抖音seo矩阵系统源码技术搭建 抖音seo源码,抖音seo矩阵系统底层框架上支持了从ai视频混剪,视频批量原创产出,云端数字人视频制作,账号矩阵, ...
- 微信小程序实现抖音视频效果
当我们进行开发的时候可能会遇到需要实现抖音视频效果的需求,并且网上该效果的开源代码少,找到的开源代码代码量大,很难进行二次开发 对此我将自己的代码进行简化,仅留下可动性高的代码模块 以上是实现效果与此 ...
- autojs模仿抖音logo效果
牙叔教程 简单易懂 效果展示 为什么做 看到别人的头像是这种风格, 虽然我不会去修改自己的头像, 但是我想知道如何实现这样的效果, 虽然写出来了, 不过我感觉还是不完全像抖音的效果, 可能还缺点啥 环 ...
- 抖音矩阵,矩阵账号开发,抖音矩阵源码搭建
抖音矩阵,矩阵账号开发,抖音矩阵源码搭建: 1.账号矩阵系统搭建首先需要注意的是支持多平台,多账号,可以实现流量互通,账号矩阵多个账号联动形成账号矩阵形式分发开发. 2.账号矩阵系统需要可以查看分发内 ...
- 引燃抖音短视频源码开发项目的几点原因
抖音上线一年多,在经历了2018年春节之后,抖音的用户量从4000万保障了50%达到6000万量级.直到现在,抖音已经完全开启了"全民抖音"的时代,成为短视频行业发展的领头军,抖音 ...
- android仿抖音礼物列表实现,Android仿抖音列表效果
本文实例为大家分享了Android仿抖音列表效果的具体代码,供大家参考,具体内容如下 当下抖音非常火热,是不是也很心动做一个类似的app吗? 那我们就用RecyclerView实现这个功能吧,关于内存 ...
最新文章
- Ubuntu快速截图
- python一般用什么编译器-Python必学之编译器用哪个好?你用错了吧!
- D - Covering HDU - 6185(未解决完)
- 1000道Python题库系列分享15(1道代码改写题)
- 面向对象的javascript-引用、作用域、闭包、上下文--(1)
- Bailian2686 打印完数【暴力】
- 微博爬虫 ----- 微博发布时间清洗
- Beta版本展示博客
- AD18学习速通教程
- 使用matlab建立机器人雅克比矩阵
- HTML网页实训的目的,web前端设计与开发-实验目的及要求 (2)
- Devexpress 各版本中文语言包
- layui日期插件样式冲突
- 热烈欢迎云南财经大学统计与数学学院院长石磊教授来芝诺数据视察指导工作
- win10 win+shift+s 截图存哪里去了
- 招行信用卡中心2021暑期实习笔试
- Hash(散列)冲突解决 线性探测再散列和二次探测再散列
- python参数估计_最小二乘与最大似然参数估计及Python实现
- Go语言中的字符串拼接方法介绍
- word表格分开快捷键_在Word 表格的编辑中,快速拆分表格应按快捷键为______。