用Python把朋友头像变表情包? Easy!

Python表情输出指南:让你的代码更加生动 如果你想要输出特定的表情符号,但又不想依赖任何库或API,那么你可以使用Unicode码来输出。在编写代码时,使用表情符号可以使代码更生动有趣,也可以加强交流透明度。在Python中,我们可以使用emoji库、第三方API和Unicode码等多种方式来输出表情符号。如果你想要其他类型的表情符号,比如动态表情或者GIF,那么你可以使用第三方API来实现。表情是人们生活不可或缺的一部分,也可以在代码中发挥巨大的作用。在Python中,我们可以使用各种库和方法来输出表情符号。这会输出一个随机的动态表情。 阅读详情

在日常生活中,我们经常会存取一些朋友们的丑照,在这个项目中,我们以萌萌哒的熊猫头作为背景,然后试着在背景图上加入朋友们的照片,效果如下图所示,完整代码已放在文末。

实现步骤

  • 导入朋友的照片(前景照片);
  • 处理前景照片(缩放、旋转,填充);
  • 导入熊猫头照片(背景照片);
  • 将前景和背景拼接起来形成表情包;
  • 在表情包下面添加文字。

1、导入需要的库

import cv2
import numpy as mp
import matplotlib.pyplot as plt
from PIL import Image, ImageDraw, ImageFont

这个项目主要是通过 opencv 完成,但如果要在表情包下面写中文的话,PIL(pillow)库是必不可少的。

2、绘图函数

这里写一个绘图函数,方便绘图操作。

def plt_show(img):
    imageRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    plt.imshow(imageRGB)
    plt.show()

3、导入前景照片

image = cv2.imread('SXC.jpg', 0)  # 导入灰度图即可
plt_show(image)

4、等比例缩放前景照片

因为我们发现前景照片的尺寸比背景尺寸还要大,这显然是不合适的,所以要先对其进行等比例(0.3)缩放。

image_resize = cv2.resize(image, None, fx=0.3, fy=0.3, interpolation = cv2.INTER_CUBIC)
plt_show(image_resize)

5、对前景照片进行二值化处理

在这里,我们将像素值大于 80 的区域设置为 255;小于 80 的区域设置成 0。

ret, image_binary = cv2.threshold(image_resize, 80, 255, cv2.THRESH_BINARY)
plt_show(image_binary)

6、提取出感兴趣区域

image_roi = image_binary[74: 185, 0: 150]
plt_show(image_roi)

7、旋转图片

因为我们的背景图片(熊猫头)是正的,而前景图片有些向右倾斜,所以要先对其进行旋转操作(大概逆时针旋转 15 度即可)。

rows, cols = image_roi.shape
M = cv2.getRotationMatrix2D(((cols-1)/2.0, (rows-1)/2.0), 15, 1)  # (旋转中心,逆时针旋转角度,各个方向同等扩大比例)
image_rotate = cv2.warpAffine(image_roi, M, (140, 130))  # (140, 130) 是指旋转后的画布大小
plt_show(image_rotate)

8、将一些不需要的黑色区域删除掉

在这里我们使用 cv2.fillPoly 函数对不需要的区域用白色进行填充。

h, w = image_rotate.shape


image_rotate_copy = image_rotate.copy()
pts1 = np.array([[0, 20],  [64, 0], [0, 0]], np.int32)
pts2 = np.array([[0, 18],  [0, h], [80, h]], np.int32)
pts3 = np.array([[0, 100],  [0, h], [w, h], [w, 100]], np.int32)
pts4 = np.array([[111, 0],  [w, 0], [w, 30]], np.int32)
pts5 = np.array([[124, 0],  [115, h], [w, h]], np.int32)
pts6 = np.array([[120, 40],  [95, 100], [120, 100]], np.int32)
foreground = cv2.fillPoly(image_rotate_copy, [pts1], (255, 255, 255))  # (图片,填充区域,填充颜色)
foreground = cv2.fillPoly(image_rotate_copy, [pts2], (255, 255, 255))
foreground = cv2.fillPoly(image_rotate_copy, [pts3], (255, 255, 255))
foreground = cv2.fillPoly(image_rotate_copy, [pts4], (255, 255, 255))
foreground = cv2.fillPoly(image_rotate_copy, [pts5], (255, 255, 255))
foreground = cv2.fillPoly(image_rotate_copy, [pts6], (255, 255, 255))


plt_show(foreground)

9、再次提取感兴趣区域并缩放

foreground_roi = foreground[0: 93, 0: 125]
plt_show(foreground_roi)


foreground_roi_resize = cv2.resize(foreground_roi, None, fx=2.5, fy=2.5, interpolation = cv2.INTER_CUBIC)
plt_show(foreground_roi_resize)

10、导入背景图片

background = cv2.imread('back.jpg', 0)
plt_show(background)

11、组合两张图片成表情包

h_f, w_f = foreground.shape
h_b, w_b = background.shape


left = (w_b - w_f)//2  # 前景图片在背景图片中的左边的横坐标
right = left + w_f  # 前景图片在背景图片中的右边的横坐标
top = 100  # 前景图片在背景图片中的上边的纵坐标
bottom = top + h_f  # 前景图片在背景图片中的下边的纵坐标


emoji = background
emoji[top: bottom, left: right] = foreground
plt_show(emoji)

12、在表情包下面添加文本

12.1 添加英文文本

如果只是要添加英文文本,用 opencv 就可以解决:

emoji_copy = emoji.copy()
# (图片,文本,位置,字体,文本大小,文本颜色,文本粗细)
cv2.putText(emoji_copy, "FXXK!!", (210, 500), cv2.FONT_HERSHEY_SIMPLEX, 1.2, (0, 0, 0), 5)
plt_show(emoji_copy)

12.2 添加中文文本

如果要添加中文文本,我们需要借助 PIL 库来实现。

PilImg = Image.fromarray(emoji)  # cv2 转 PIL
draw = ImageDraw.Draw(PilImg)  # 创建画笔
ttfront = ImageFont.truetype('simhei.ttf', 34)  # 设置字体
draw.text((210, 450),"你瞅啥!!",fill=0, font=ttfront)  # (位置,文本,文本颜色,字体)
emoji_text = cv2.cvtColor(np.array(PilImg),cv2.COLOR_RGB2BGR)  # PIL 转回 cv2
plt_show(emoji_text)

13、保存表情包

cv2.imwrite('./emoji.png', np.array(emoji_text))

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料以及群交流解答点击即可加入

【3D目标检测】激光雷达和相机联合标定(一)——ROS同步解包 激光雷达和相机联合标定(一)——ROS同步解包 阅读详情

相关推荐

知识导航神器:Obsidian Breadcrumbs 插件全攻略

Parent: 插件Child: Breadcrumbs 用法这样,它就能识别出你和其他笔记的关系。

m0_73735578的博客 1630

斗图吗?教你用Python来制作表情包

“表情包”是现在非常流行的交流方式,通过一张图片就能把文字不能表达或不便于表达的情感给表示出来,现在年轻人的社交方式是所谓“天可不聊,图不可不斗”,几乎任何对话都会出现表情包的身影,一言不合就斗图 今天呢,我就要用Python来做几个表情包。 制作表情包用到的技术是Turtle库,然后就是PIL库。话不多说,我们先上图 这是一个捂脸的表情,可以表达内心千万只***奔腾而过,使用Turtle来实现,可以将这个图分成以下几个部分:脸,嘴巴,牙齿,两边的眼泪,手指和手腕,完整的代码和语法不过多解释,贴一个画脸的代

m0_59236548的博客 4509

得利捷datalogic扫码枪调试说明

针对得利捷datalogic扫码枪快速调试并,可以根据详细步骤设置扫码枪,并配有tcp调试助手辅以验证,以达到快速调试完成扫码枪的工作。

Conway510的博客 1万+

制作表情包(python)

1 代码 from PIL import Image, ImageDraw, ImageFont def make_expression(img_path1, img_path2): image = Image.open(img_path1) face = Image.open(img_path2) image.paste(face, (70, 40)) d...

静谧、淡雅 1872

datart 二开环境搭建

下载源码, 地址: https://github.com/running-elephant/datart, dev 分支; 解压后使用 idea 打开; 服务端: 3.1 安装依赖, idea会自动安装; 3.2 修改配置文件 /config/application.yml 3.3 创建数据库,并将bin/datart.sql导入到数据库中 3.4 入口: /server/src/main/java/datart/DatartServerApplication.java [外链图片转存失败,源站可能有防.

又是再见? 6133

qt工程引入opencv库步骤

第一步:新建qt工程 第二步:在工程名.pro文件中添加opencv库的路径                   INCLUDEPATH += /home/liyuanzhe/opencv-2.4.8/include/opencv \ /home/liyuanzhe/opencv-2.4.8/include/opencv2 LIBS += /home/liyuanzhe/open

superyuanzhe的专栏 5722

用 Python 把你的朋友变成表情包

文章目录项目说明实现步骤Python 实现1、导入需要的库2、绘图函数3、导入前景照片4、等比例缩放前景照片5、对前景照片进行二值化处理6、提取出感兴趣区域7、旋转图片8、将一些不需要的黑色区域删除掉9、导入背景图片10、组合两张图片成表情包11、在表情包下面添加文本11.1 添加英文文本11.2 添加中文文本12、保存表情包完整代码 项目说明 在日常生活中,我们经常会存取一些朋友们的丑照,在这个项目中,我们以萌萌哒的熊猫头作为背景,然后试着在背景图上加入朋友们的照片。效果如下图所示: 实现步骤

cocofisher的博客 1万+

STM32CubeMX-电机控制2-电机相关配置部分

STM32CubeMX-电机霍尔传感器 写在前面的话:之前一直使用库函数,调程序时总会觉得是配置出现问题,要画一些时间去检查配置程序,所以目前转到了STM32CubeMX。写这些内容一方面是整理记录,因为是刚入门,所以难免出现错误,希望能得到大家指正;另一方面是因为自己一个人调试,走了很多弯路,写下来希望能给相同处境的人一些参考。 步骤一: 电机霍尔传感器接口 我目前使用的是STM32F4,电机的...

niker_co的博客 1万+

随笔-用turtle画各类表情包

用python的turtle画表情包

破罐子不摔的博客 2684

使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)

1、安装好matlab和freesurfer2、在目标位置创建文件夹3、开放权限4、将需要计算的nii文件放入文件夹。

zQIANYUN的博客 5629

从Safety Manual到系统安全概念

本文系统阐述了构建功能安全"证据链"的工程化方法论,核心要点包括:1)建立"风险→对策→验证→证据"闭环链条;2)SafetyManual和FMEDA作为关键证据支撑点,前者界定系统安全边界,后者量化诊断覆盖率;3)通过四步法继承芯片安全机制并扩展至系统级;4)形成"设计-分析-验证"三维闭环体系,包括安全目标、技术实现和验证矩阵;5)强调证据链闭环对安全认证和OEM认可的重要性。该方法论实现了从理论要求到工程实践的完整转化,确保安全设计可验证、可

VehSwHwDeveloper的博客 722

几行代码实现用Python输出表情包

近几日在搞邮件自动发送,发现python原来可以发小表情!而且操作很容易,但是发现现在的博文介绍的不是很全面(或者我没搜出来……),因此在此补充一二。

深竹清风的博客 6106

1. SAP Business Application Studio 里创建一个基于 CAP 模型的最简单的 OData 服务

本文基于 SAP Cloud Application Programming 编程模型的 OData 服务开发教程的第一步,简述了 SAP Business Technology Platform 里 Business Application Studio 开发工具的打开方式,创建 Dev Space 以及 CAP 项目的创建步骤,以及如何通过 schema.cds 和 service.cds 分别创建 OData 模型和 OData 服务,最后通过 ports preview 打开 OData 服务预览页

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1798

用 Python 把朋友头像变表情包? Easy!

来自:csdn转自:Python学习与数据挖掘在日常生活中,我们经常会存取一些朋友们的丑照,在这个项目中,我们以萌萌哒的熊猫头作为背景,然后试着在背景图上加入朋友们的照片,效果如下图...

SeizeeveryDay的博客 487

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

python代码图片头像_用 Python 把朋友头像变表情包? Easy!

22点24分准时推送,第一时间送达编辑:技术君 | 来源:Python学习与数据挖掘上一篇:正文在日常生活中,我们经常会存取一些朋友们的丑照,在这个项目中,我们以萌萌哒的熊猫头作为背景,然后试着在背景图上加入朋友们的照片,效果如下图所示。实现步骤导入朋友的照片(前景照片);处理前景照片(缩放、旋转,填充);导入熊猫头照片(背景照片);将前景和背景拼接起来形成表情包;在表情包下面添加文字。1、导入需...

weixin_39650784的博客 214

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

python制作会动的表情包_用 Python 把朋友头像变表情包? Easy!

来自:csdn转自:Python学习与数据挖掘在日常生活中,我们经常会存取一些朋友们的丑照,在这个项目中,我们以萌萌哒的熊猫头作为背景,然后试着在背景图上加入朋友们的照片,效果如下图所示,完整代码已放在文末。 实现步骤导入朋友的照片(前景照片);处理前景照片(缩放、旋转,填充);导入熊猫头照片(背景照片);将前景和背景拼接起来形成表情包;在表情包下面添加文字。1、导入需要的库import cv...

weixin_39963053的博客 407

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

python保存表情包_用 Python 把朋友头像变表情包? Easy!

来自:csdn转自:Python学习与数据挖掘在日常生活中,我们经常会存取一些朋友们的丑照,在这个项目中,我们以萌萌哒的熊猫头作为背景,然后试着在背景图上加入朋友们的照片,效果如下图所示,完整代码已放在文末。实现步骤导入朋友的照片(前景照片);处理前景照片(缩放、旋转,填充);导入熊猫头照片(背景照片);将前景和背景拼接起来形成表情包;在表情包下面添加文字。1、导入需要的库import cv2im...

weixin_30477489的博客 182

python表情换头_用 Python 把朋友头像变表情包? Easy!

22点24分准时推送,第一时间送达编辑:技术君 | 来源:Python学习与数据挖掘上一篇:正文在日常生活中,我们经常会存取一些朋友们的丑照,在这个项目中,我们以萌萌哒的熊猫头作为背景,然后试着在背景图上加入朋友们的照片,效果如下图所示。实现步骤导入朋友的照片(前景照片);处理前景照片(缩放、旋转,填充);导入熊猫头照片(背景照片);将前景和背景拼接起来形成表情包;在表情包下面添加文字。1、导入需...

weixin_32297123的博客 444

《Python趣味工具》——自制emoji3

我们已经分别定义函数绘制了emoji的每一个部分。接下来我们可以拼接函数完成整个emoji的绘制。完成绘制表情包的函数,分为3步:1.定义函数emoji(x)绘制表情包,参数x表示黑眼珠移动距离。2.函数包含:draw_face(),draw_mouth(),eyes_white(),eyes_black(x),write_emoji()共5个部分。3.调用emoji(x)函数,将参数设置为60,绘制黑眼珠在右侧的表情包。

weixin_73453526的博客 5434

用 Python 开发一个【GIF表情包制作神器】

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。使用 Python 开发一个【短链接生成器】

Python栈_基的博客 1160

用Python编写10个动态表情

这10个表情都是用python的turtle来画的。需要注意的是,代码中用了from PIL import ImageGrab来获取屏幕尺寸screen_width和screen_height,这个代码不适合Linux,linux中需要把这行注释掉才能运行,且screen的size就要手动设置了。一共有10个动态表情,分别是微笑、难过、害羞、尴尬、生气、困、瞌睡、大笑、转眼睛、哭。我在个人公众号“天飓”上建了一个。的合集,有兴趣的朋友欢迎添加。

天飓的技术博客 1082

python表情包合集_python——简单生成表情包

import sysfrom email.header import UTF8reload(sys)sys.setdefaultencoding("gbk")import osimport pygamefrom pygame.locals import *②准备素材并引入(我的素材)素材用代码进行引用并设置合成属性img = Image.open("../img/head.jpg")#250*25...

weixin_39653761的博客 1765

Python深度学习实现DIY专属个人表情包

Python深度学习实现DIY专属个人表情包

water的博客 1666

小程序 delete_几十个程序员扎心的瞬间—必存表情包系列

细心整理了这么多,够你笑一阵子了......笑之前,还望各位心里有点B数,该关注的关注,该收藏的收藏。谢谢当我演示一个功能时,它没有按预期进行时Bug 变 FeatureCPU新用途当两个实习生结对编程的时候上线前加了一个小特性,结果......C++ 中的递归Java VS C#Java VS C++高级开发人员重构代码当项目经理突然看到我的屏幕时忘记定义关键变量的结果甲方开发要求,和架构还原度...

weixin_39955825的博客 519

[309]python生成表情包

素材准备 这里我们以网络上流传最广的金馆长表情为中心,以萌萌哒的熊猫头作为背景,底下加上文字就能构成一张表情包。 然后用PS处理一下图片大小,模板大小设为250*250,表情裁剪一下白边。 图片叠加 第一步工作是把表情叠加到模板上,注意到我们的表情素材是白底而不是透明,所以位置要控制好,不然会遮盖住轮廓。 from PIL import Image, ImageDra...

周小董 3758

Python制作gif表情包生成工具,斗图再也不会输啦

在当前无表情包不会聊天的时代,怎么也不能输在表情包数量不足上啊,今天咱们就来制作一个 gif 生成工具,用来制作表情包也太好用啦先来看看整体效果。

m0_59596937的博客 673
上一篇: Python爬虫:手把手教你采集登陆后才能看到数据!
下一篇: Python爬取安居客储存到csv或者mongo!
pythonlaodi
博客等级 码龄6年 286粉丝 244原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值