发布时间:2025-07-18
点击次数: 本文介绍了将人像转化为“蜡笔小宸”(蜡笔小新风格)的方法。步骤包括:登录“蜡笔大陆”安装所需库;用PaddleHub进行人脸68个关键点检测,为后续操作打基础;提取眉毛关键点,通过连线并控制宽度刻画粗眉;运用图像局部平移算法,依据人脸关键点进行“胖脸”操作,使脸部更圆润。还可通过run.py一键执行,调整参数获得对应效果。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

蜡笔小新应该是好多小伙伴的童年回忆之一,不会有人不喜欢蜡笔小新那招牌的粗眉毛以及圆嘟嘟的小脸蛋吧!不会吧不会吧!下面嘞,我们以宸哥作为工具人,还原蜡笔小新的远房表弟————蜡笔小宸!

跟着我的步伐,寻找蜡笔小新的远房表弟之路,正式开启!(二三四步骤为过程演示~一键寻找请在登陆蜡笔大陆之后跳至第五部分)
!pip install --upgrade pip !pip install opencv-python==4.5.4.60!pip install paddlehub==2.1.1
人脸关键点检测是人脸识别和分析领域中的关键一步,它是诸如自动人脸识别、表情分析、三维人脸重建及三维动画等其它人脸相关问题的前提和突破口。该 PaddleHub Module 的模型转换自 https://github.com/lsy17096535/face-landmark ,支持同一张图中的多个人脸检测。此步的目的是获取人脸68个关键点的坐标,如下图所示。有了人脸68个关键点的坐标,再接下来进行蜡笔眉的刻画,以及嘟嘟脸的生成就会轻松许多。

import cv2import paddlehub as hubimport matplotlib.pyplot as plt
import matplotlib.image as mpimgimport numpy as npimport mathfrom PIL import Image
src_img = cv2.imread('example.jpg')# 加载模型并进行预测module = hub.Module(name="face_landmark_localization")
result = module.keypoint_detection(images=[src_img])
tmp_img = src_img.copy()for index, point in enumerate(result[0]['data'][0]): # cv2.putText(img, str(index), (int(point[0]), int(point[1])), cv2.FONT_HERSHEY_COMPLEX, 3, (0,0,255), -1)
cv2.circle(tmp_img, (int(point[0]), int(point[1])), 2, (0, 0, 255), -1)
res_img_path = 'face_landmark.jpg'cv2.imwrite(res_img_path, tmp_img)
img = mpimg.imread(res_img_path)
# 展示预测68个关键点结果(若未显示关键点可视化结果请再次运行此cell)plt.figure(figsize=(10,10))
plt.imshow(img)
plt.axis('off')
plt.show()[2025-11-30 14:27:46,626] [ WARNING] - The _initialize method in HubModule will soon be deprecated, you can use the __init__() to handle the initialization of the object [2025-11-30 14:27:46,743] [ WARNING] - The _initialize method in HubModule will soon be deprecated, you can use the __init__() to handle the initialization of the object--- Fused 0 subgraphs into layer_norm op.--- Fused 0 subgraphs into layer_norm op.
<Figure size 720x720 with 1 Axes>
在上一步中我们得到了人脸68个关键点坐标,其中18-22,23-27为眉毛的坐标值。想得到蜡笔小新这照片的粗粗眉,简单来讲只需将眉毛的坐标点连成线,控制适当的宽度即可。
这里可以使用opencv的line()函数轻松实现。

def thick_eyebrows(image, face_landmark, width): for i in range(18-1, 22-1): cv2.line(image, face_landmark[i], face_landmark[i+1], (0, 0, 0), width) for i in range(23-1, 27-1): cv2.line(image, face_landmark[i], face_landmark[i+1], (0, 0, 0), width) return image# 提取出人脸关键点坐标face_landmark = np.array(result[0]['data'][0], dtype='int')# 生成蜡笔小新版眉毛width = 8src_img = thick_eyebrows(src_img, face_landmark, width) cv2.imwrite('thick_eyebrows.jpg', src_img) img = mpimg.imread('thick_eyebrows.jpg') # 展示蜡笔眉plt.figure(figsize=(10,10)) plt.imshow(img) plt.axis('off') plt.show()
<Figure size 720x720 with 1 Axes>
在这里,使用了图像局部平移算法。思路是:由变形前坐标,根据变形映射关系,得到变形后坐标。这其中变形映射关系是最关键的,不同的映射关系,将得到不同的变形效果。平移、缩放、旋转,对应的是不同的映射关系,即不同的变换公式。当然实际在计算过程中,用的是逆变换,即由变形后坐标,根据逆变换公式反算变形前坐标,然后插值得到该坐标rgb像素值,将该rgb值作为变形后坐标对应的像素值。这样才能保证变形后的图像是连续、完整的。
简小派
简小派是一款AI原生求职工具,通过简历优化、岗位匹配、项目生成、模拟面试与智能投递,全链路提升求职成功率,帮助普通人更快拿到更好的 offer。
123
查看详情
In [5]
# 进行胖脸操作def fat_face(image, face_landmark):
end_point = face_landmark[30] # 胖左脸,3号点到5号点的距离作为一次胖脸距离
dist_left = np.linalg.norm(face_landmark[3] - face_landmark[5])
image = local_traslation_warp(image, face_landmark[3], end_point, dist_left) # 胖右脸,13号点到15号点的距离作为一次胖脸距离
dist_right = np.linalg.norm(face_landmark[13] - face_landmark[15])
image = local_traslation_warp(image, face_landmark[13], end_point, dist_right) return image
In [6]
# 局部平移算法def local_traslation_warp(image, start_point, end_point, radius): radius_square = math.pow(radius, 2) image_cp = image.copy() dist_se = math.pow(np.linalg.norm(end_point - start_point), 2) height, width, channel = image.shape for i in range(width): for j in range(height): # 计算该点是否在形变圆的范围之内 # 优化,第一步,直接判断是会在(start_point[0], start_point[1])的矩阵框中 if math.fabs(i - start_point[0]) > radius and math.fabs(j - start_point[1]) > radius: continue distance = (i - start_point[0]) * (i - start_point[0]) + (j - start_point[1]) * (j - start_point[1]) if distance < radius_square: # 计算出(i,j)坐标的原坐标 # 计算公式中右边平方号里的部分 ratio = (radius_square - distance) / (radius_square - distance + dist_se) ratio = ratio * ratio # 映射原位置 new_x = i + ratio * (end_point[0] - start_point[0]) new_y = j + ratio * (end_point[1] - start_point[1]) new_x = new_x if new_x >= 0 else 0 new_x = new_x if new_x < height - 1 else height - 2 new_y = new_y if new_y >= 0 else 0 new_y = new_y if new_y < width - 1 else width - 2 # 根据双线性插值法得到new_x, new_y的值 image_cp[j, i] = bilinear_insert(image, new_x, new_y) return image_cp# 双线性插值法def bilinear_insert(image, new_x, new_y): w, h, c = image.shape if c == 3: x1 = int(new_x) x2 = x1 + 1 y1 = int(new_y) y2 = y1 + 1 part1 = image[y1, x1].astype(np.float) * (float(x2) - new_x) * (float(y2) - new_y) part2 = image[y1, x2].astype(np.float) * (new_x - float(x1)) * (float(y2) - new_y) part3 = image[y2, x1].astype(np.float) * (float(x2) - new_x) * (new_y - float(y1)) part4 = image[y2, x2].astype(np.float) * (new_x - float(x1)) * (new_y - float(y1)) insertvalue = part1 + part2 + part3 + part4 return insertvalue.astype(np.int8)In [7]
# 进行胖脸操作fat_nums = 3for i in range(1, fat_nums):
src_img = fat_face(src_img, face_landmark)
cv2.imwrite('res.jpg', src_img)
img = mpimg.imread('res.jpg')
# 展示蜡笔眉+嘟嘟嘴plt.figure(figsize=(10,10))
plt.imshow(img)
plt.axis('off')
plt.show()<Figure size 720x720 with 1 Axes>
run.py中引出了四个参数,分别是:
img_path 输入图片路径 width 眉毛宽度 res_img_path 输出图片路径 fat_nums 嘟嘟脸系数
依照参数描述进行相应的修改即可,顺利运行下方命令并打印出done之后,可在左侧(/home/aistudio)目录下找到输出图片(默认:res.jpg)
In [ ]!python run.py --img_path example.jpg --width 8 --res_img_path res.jpg --fat_nums 3




(妈妈,妈妈,我跟PPDE大佬们同框了哈哈哈哈)
以上就是PaddleHub人脸关键点检测:一键生成蜡笔小新的远房表弟的详细内容,更多请关注其它相关文章!
# 不会吧
# 枣阳市专业的网站优化
# 上海装饰公司网站建设
# 新手怎么快速学习seo推广
# 沈阳seo黑酷网络
# 孝感网站建设的策划方案
# 县工商局 网站建设
# 苏州谷歌seo厂商
# 湛江自己网站建设教程
# seo优化公司推荐放心投seo
# 常州抖音seo优化排名
# 插值
# 逆变
# 点到
# 官网
# python
# 可在
# 的是
# 一言
# 中文网
# 一键
# type
# warp
# fig
# udio
# igs
# ai
# 工具
# git
相关栏目:
【
行业新闻62819 】
【
科技资讯67470 】
相关推荐:
日本学校探索引入 AI 和无人机:提高安保效率,节省劳动力
WPS AI 官网上线:可申请体验官资格,支持 Windows、安卓端下载
读创正式上线“读创AI聊”功能
Meta 发布 Voicebox AI 模型:可生成音频信息,用于 NPC 对话等
中国联通发布图文AI大模型,可实现以文生图、视频剪辑
软银、淡马锡、沙特阿美突击入股,“协作机器人第一股”节卡股份:强敌环伺,持续失血是常态
AI+游戏首度大范围公布实际应用成果,AI全面来临还有多远?
探索人工智能和物联网的动态融合
微软最新推出的NaturalSpeech2语音合成模型:提供更准确的语音重构,避免棒读效果
跟着AI大热的“光模块”到底是什么?
WHEE安装教程
12页线性代数笔记登GitHub热榜,还获得了Gilbert Strang大神亲笔题词
组建团队,字节跳动要造机器人?
第四范式「式说」大模型入选《2025年通用人工智能创新应用案例集》
AI 作画工具 Midjourney 推出“pan”功能,可平移扩展图片外场景
人工智能写作检测工具不靠谱,美国宪法竟被认为是机器人写的
美的推出 AI 双视精准避障的自动集尘扫拖机器人 V12,售价仅为2999元
美图吴欣鸿:希望更多人用上AI时代的影像生产力工具
ChatGPT 可以设计机器人吗?
人工智能改变网络安全和用户体验的三种方式
0代码微调大模型火了,只需5步,成本低至150块
Stability AI 推出文生图模型 SDXL0.9,GPU要求下探至消费级水平
AI大模型紫东太初已被注册商标 中科院已注册紫东太初大模型商标
Unity发布Sentis和Muse AI工具,助力创作游戏和3D内容
MiracleVision视觉大模型
《爱康未来之夜嘉宾官宣,携手共赴AI未来》
世界人工智能大会(WAIC 2025)点燃魔都,博尔捷数字科技携前沿技术产品亮相
新华社联合北大发布AI大模型评测:安全可靠成重点,360智脑表现优异
猿力科技入选北京市通用人工智能产业创新伙伴计划
映宇宙数字人“映映”亮相ChinaJoy,展示AI黑科技实现用户互动
张朝阳与陆川谈AI:ChatGPT是鹦鹉学舌思维,不可能取代人类 | 把脉AI大模型
科普:什么是AI大模型
找对了风口想不火都难,乐天派机器人,安卓机器人的最终形态?
小米又拿下国际比赛第一:AI翻译立功
面向AI大模型,腾讯云首次完整披露自研星脉高性能计算网络
华为推出全新操作系统HarmonyOS 4,AI和新引擎完美融合
IBM CEO克里希纳:人工智能潜在创新无法被监管
传Meta 2025年推出首款AR眼镜,采用军用级别材料,计划生产1000台
郭帆导演成功利用AI技术制作的《流浪地球3》预告片在央视热播,引发巨大反响
百度举办AIGC创作沙龙,现场传授AI绘画“咒语”技巧
即将到来:AI婚纱设计软件实际测试,人工智能即将开创婚纱设计新纪元
消息称字节机器人团队已有约50人,计划年底扩充到上百人
提升工作效率的智能工具:Zapier 让工作变得更简单!
马斯克预测:特斯拉全自动驾驶将在今年实现 对AI深度变化感到担忧
微软为 AI 初学者推出免费网课:为期 12 周,共 24 节课
构建人机交互创新模式,微美全息研究AIGC智能交互界面生成技术
搭载星火认知大模型 讯飞听见智慧屏开启AI办公新体验
“黑科技”亮相大湾区轨交论坛 智慧交通迈向“强AI”
“可用”“有用”的讯飞星火认知大模型将亮相世界人工智能大会
人工智能在重症监护室的未来