使用mediapipe实现ikun表情包制作

简介: 使用mediapipe实现ikun表情包制作

前言


   前些日子做了一份人物图像提取,更改背景的代码,今天一时心血来潮忍不住把蔡某坤打篮球视频剪贴下来想着制作一个表情包来玩玩,这里涉及的关键技术点有两个如何完成视频融合,融合后如何制作gif。这两个技术点中较难点是视频融合,在本文中我将着重于如何进行视频融合,原理部分将不再过多阐述。


开始制作


   由 juejin.cn/post/712452… 可以得到将视频中的任务分离出来,然后进行替换背景。


准备素材:蔡某坤的《鸡你太美》视频一份、任意鸡叫视频一份、代码如下自取。


实验整体步骤:


  1. 将两份视频分帧存储;


  1. 对两份视频帧进行归一化处理(这里我选择的是size=1080x760);


  1. 参考上述链接中地址原理使用如下代码完成蔡某坤和鸡叫视频融合;


  1. 对融合后视频进行制作gif。


代码逻辑流程:


  1. 对视频帧按照播放顺序命名(1~无穷);


  1. 建立mediapipe检测人物网络;


  1. 构造 for 循环按照帧名进行读取;


  1. 读取含有ikun的人物帧;


  1. 转换bgr2rgb空间;


  1. 设定检测阈值进行ikun人物提取;


  1. 选择背景图(方式同3中一样)


  1. 进行人物和背景融合


  1. 展示融合后的画面


  1. 将融合后的画面制作成gif


import cv2
import mediapipe as mp
import numpy as np
mp_drawing = mp.solutions.drawing_utils
mp_selfie_segmentation = mp.solutions.selfie_segmentation
for i in range(1, 1201):
    image = cv2.imread('./3/%s.jpg' % i)
    with mp_selfie_segmentation.SelfieSegmentation(
            model_selection=0) as selfie_segmentation:
        bg_image = None
        image = cv2.cvtColor(cv2.flip(image, 1), cv2.COLOR_BGR2RGB)
        image.flags.writeable = False
        results = selfie_segmentation.process(image)
        image.flags.writeable = True
        image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
        condition = np.stack(
            (results.segmentation_mask,) * 3, axis=-1) > 0.5
        if bg_image is None:
            bg_image = cv2.imread('./5/%s.jpg' % i)
        output_image = np.where(condition, image, bg_image)
        cv2.imshow('MediaPipe Selfie Segmentation', output_image)
        cv2.imwrite("./4/%s.jpg" %i, output_image)
        if cv2.waitKey(5) & 0xFF == 27:
            break




相关文章
|
6月前
|
人工智能
怎么用Midjourney制作表情包
怎么用Midjourney制作表情包
159 0
|
2月前
|
数据安全/隐私保护 计算机视觉 Python
用python给照片添加水印的三种方式
这篇文章介绍了使用Python给照片添加水印的三种方式:通过PIL库直接添加文本水印、使用OpenCV库结合图像处理功能添加水印,以及使用filestools库进行更为简便的水印添加。
89 7
|
6月前
|
存储 安全 数据安全/隐私保护
表情包受保护无法发送怎么破解和制作gif表情包
表情包受保护无法发送怎么破解和制作gif表情包
205 0
|
Web App开发 编解码 iOS开发
如何使用ffmpeg制作透明背景的视频
数字人的视频我是使用的腾讯智影生成带绿幕的视频,要实现透明背景,有个很关键的信息需要知道,不是所有的视频格式(视频编码)都支持透明背景,首先我们最常用的mp4就是不支持(不管是h264还是h265)都不支持,目前支持透明背景的只有少部分视频编码,比如google的vp9(webm)格式,上图中我用就是webm+vp9编码的视频。实测这种视频兼容性也不行,比如在苹果的safari浏览器下,就无法透明背景。
503 0
|
6月前
|
计算机视觉 Python
python制作透明背景图片
python制作透明背景图片
|
6月前
|
Python
Python制作gif表情包生成工具,斗图再也不会输啦
Python制作gif表情包生成工具,斗图再也不会输啦
|
存储 计算机视觉 Python
Python 使用PIL.Image制作一个运动小人的动态图
Python 使用PIL.Image制作一个运动小人的动态图
225 0
|
数据安全/隐私保护 Python
python小玩意——添加水印
python小玩意——添加水印
python小玩意——添加水印
|
文字识别 算法 Swift
毕业设计在iOS上使用OpenCV实现图片中的文字框选文字识别
毕业设计在iOS上使用OpenCV实现图片中的文字框选文字识别
563 0
毕业设计在iOS上使用OpenCV实现图片中的文字框选文字识别
使用python-pygame包生成一个艺术照片-学习笔记13
使用python-pygame包生成一个艺术照片-学习笔记13
70 0
使用python-pygame包生成一个艺术照片-学习笔记13