基于C++实现人脸过渡(大作业报告)
♻️ 资源大小826KB➡️资源下载https://download.csdn.net/download/s1t16/87453222人脸过渡大作业报告基本功能介绍此次大作业实现了从一张人脸照片到另一张人脸照片的过渡。使用程序流程选取控制点特征点使用者可以选择已经存储于文件中的控制点也可以自己手动选择控制点。在选择的时候需要注意源图像SI中控制点和目标图像DI中控制点顺序需要对应比如 SI 中先选眼睛再选鼻子那么 DI 中也需要先选眼睛再选鼻子其次控制点的数量也需要保持一致如若不然选取的控制点无效会被要求重新选取。显示 Delaunay 分割效果完成本次作业的核心算法之一便是 Delaunay 三角分割。所以会显示 Delaunay 分割效果。选择产生多少张过渡图片过渡图片的数量是使用者选择的。生成过渡图片并保存这个过程可能需要一定的时间程序运行完成之后可以在当前目录下查看产生的图片。展示过渡图片每张图片停留 1s。选择是否保存此次选择的特征点若保存此次选择的特征点下次运行程序之时可以直接调用保存后的文件。设计思路为了实现程序功能需要完成以下过程人工选取控制点。控制点取在眉心、眼珠、鼻子两侧等特征比较明显的部位。控制点选好之后进行 Delaunay 三角化。根据选择的特征点将一张图片剖分为若干个三角形。根据控制点对应关系得到 SI 剖分三角形和 DI 剖分三角形对应关系。根据 SI 剖分三角形和 DI 剖分三角形对应关系和过渡系数得到过渡图像中三角形与源/DI 剖分三角形对应关系。根据三角形对应关系求出仿射矩阵。根据仿射矩阵求出过渡图像中每一点仿射到源/DI 中的点很有可能是个浮点数。不同点在不同三角形中所以对应的仿射矩阵很可能是不一样的。根据仿射得到点的坐标再由双线性插值得到过渡图片中每一点在源/DI 中像素值。根据双线性插值结果和过度系数求出过渡图片像素点的像素值。从而得到过渡图片。改变过度系数重新得到新的过渡图片直至过渡完成。原理基本原理人脸过渡过程可以使看作 SI 权重不断减小和 DI 权重不断增大其本质是多次映射。图像权重体现为坐标和像素值权重。可以这样来想从 SI 直接变化到 DI 就没有映射没有过渡。但是从 SI 照片经过一张过渡照片再到 DI就有一次过渡这个过程中就会发生两次映射分别是 SI 映射到过渡图片DI 映射到过渡图片。依此类推当有两张过渡图片时会发生四次映射。在映射的过程中如果用一个矩阵来代替必然会导致有很大的误差为了缩小这个误差我们应该将图片分为若干个三角形或者是四边形我选择是分为三角形这样每个三角形中包含点的映射矩阵就由三角形的三个顶点来确定而三角形的顶点就是由选取的控制点来确定的。因为图像可以被剖分为许多三角形所以我就拿三角形来举个例子源图中三角形三个点分别为【0,0100,100100,0】DI 中三个点分别为【0,0200,200200,0】。若只有一张过渡图片那么与该三角形对应的过渡三角形应该为【0,0150,150150,0】。若有两张过渡图片那么对应的两个三角形分别为【0,0133,133,0133,0】和【0,0166,166166,0】。依此类推就可以知道产生 n 张过渡图片每张过渡图片的三角形坐标。得到映射矩阵之后分别求出 SI 和 DI 到过渡图像的映射最后再附加上像素值权重便得到过渡图像。控制点的选取。控制点的选取直接影响了过渡图片的质量根据前面的叙述三角形映射矩阵是由控制点决定的。那么为什么控制点的选取要选择具有特征的点就拿人的眼睛来举例子如果在 SI 和 DI 中包含眼睛的三角形控制点不是眼睛那么 SI 和 DI 分别向过渡图像映射之后眼睛的位置可能不是重叠的这就会导致过渡图像中眼睛数量翻了一倍。三角剖分算法图像三角化要求产生的三角形边不会相交并且所有的三角形能够刚好完全覆盖整个图像。在实现此目的时我选用了 openCV 中的 Delaunay 剖分Subdiv2D 这个类。仿射仿射的目的是要知道过渡三角形中每一个点对应 SI/DI 中三角形的点。若已知三角形 A 的三个顶点分别为x1y1x2y2x3y3对应三角形 B 的顶点为a1b1a2b2a3b3可以求出 A-B 的仿射矩阵。Aff 若已知三角形 A 中某点为(m,n)可以求出其对应的点(c,d)双线性插值根据仿射变换求出对应点坐标是为了得到像素值。得到的坐标多数情况下不是整数而如何求取非整数非网格点处像素值呢我采用的是双线性插值法如下图假设 P 为我们要求的插值节点Q11Q12Q21Q22 为网格点。双线性插值方法是先在一个方向上插值x 方向再在另一个方向上插值y 方向。举个例子先在 x 上插值再在 y 上插值程序实现以及结果控制点选取主要调用 setMouseCallback()函数得到鼠标左键点击处坐标。并且调用 circle()函数将鼠标左键左键点击处点亮。Delaunay 三角化利用 openCV 中的 Subdiv2D 类将控制点插入后就可以得到三角化后三角形的坐标然后我再将三角形的边画出来得到以下结果。仿射矩阵计算以及坐标仿射仿射矩阵计算坐标仿射双线性插值实验结果以及对结果的讨论由于产生的图片比较多不放便一张一张的贴出来所以找了一张有特点的。以上图片出现了一个问题就是某些区域会变得模糊在这张图片中是下巴部分原因肯可能是我在选取控制点时没选取好下巴和下巴没有对应起来也怪 Trump 是个双下巴不好找。实验中遇到的问题特征点的选取必须要有对应顺序如果顺序不对应那么产生的过渡照片质量会很糟糕。而顺序检验这一点程序无法做到能做到的只有特征点数量检测。

相关新闻

协作工具堆不出高效组织:瓶颈在文化而非功能

协作工具堆不出高效组织:瓶颈在文化而非功能

协作工具堆不出高效组织:内网协作新范式的真正瓶颈在文化,而非功能热点现象:协作工具投资热背后的“效率陷阱” 过去几年,企业协作工具市场经历了前所未有的繁荣。从“全员上钉”到“All in 飞书”,从即时通讯到一站式…

2026/10/13 15:28:56 阅读更多 →
混合办公下,私有化部署成就内网安全新基石

混合办公下,私有化部署成就内网安全新基石

混合办公常态化,内网安全边界正在“溶解”:私有化部署为何成为数据主权的新基石? 在一家金融机构的应急指挥中心,一笔涉及数十亿资产的异常交易正在被紧急处置。核心团队通过VPN接入内网,在公共即时通讯工具中快速传递…

2026/10/10 3:56:42 阅读更多 →
移动化转型中的安全与合规平衡

移动化转型中的安全与合规平衡

移动化转型中的安全与合规平衡:构建可信的掌上工作空间 1. 移动化转型进入深水区,安全与合规的失衡正在侵蚀企业生产力从远程办公到全场景移动化,企业正在经历一场不可逆的终端变革。业务处理、审批决策、客户沟通早已不再局限于办公室内&…

2026/10/13 9:11:55 阅读更多 →

最新新闻

PCL点云圆柱体分割实战:RANSAC原理、参数调优与工业应用

PCL点云圆柱体分割实战:RANSAC原理、参数调优与工业应用

做点云处理这几年,我有个特别深的体会:几乎每个项目里需要找的几何元素,翻来覆去就那么几种——平面、球、圆柱。平面最简单,一个法线加一个距离就描述完;球也不难,中心加半径一共四个参数;唯独…

2026/10/13 21:30:25 阅读更多 →
PHP+UniApp开发宠物饲养交流系统实战

PHP+UniApp开发宠物饲养交流系统实战

1. 项目概述最近完成了一个宠物饲养交流系统的开发项目,采用PHP后端UniApp前端的混合开发模式。这个系统包含APP和小程序双端应用,主要解决宠物主人在饲养过程中遇到的交流、知识分享和日常管理需求。从技术选型到功能实现,整个项目走下来积累…

2026/10/13 21:30:25 阅读更多 →
litellm实战:统一大模型API与网关部署全解析

litellm实战:统一大模型API与网关部署全解析

1. 多家大模型API来回切换的痛苦,才是litellm真正的用武之地 过去一年,我先后在几个项目里接入了不同的大模型服务商。说实话,最让人头疼的不是模型效果本身,而是API的调用方式五花八门。有的用 messages 数组传对话历史&#x…

2026/10/13 21:30:25 阅读更多 →
操作系统进程线程模型:状态切换、同步互斥与死锁详解

操作系统进程线程模型:状态切换、同步互斥与死锁详解

2. 状态模型与控制方法:从“三态图”到上下文切换2.1 三态与五态:多出来的“创建态”和“终止态”用来干嘛先解决一个最基础的问题:进程到底有哪几种状态?很多教材开头就给出三态模型——运行态、就绪态、阻塞态——配合那张经典的…

2026/10/13 21:30:25 阅读更多 →
LiteLLM:大模型API统一网关与智能路由中枢

LiteLLM:大模型API统一网关与智能路由中枢

1. 为什么是 LiteLLM:当大模型调用变成“API 路由器”这件事LiteLLM 这个名字第一次出现在我视野里,是在一个凌晨三点的告警群里。某高校实验室部署的推理服务突然响应延迟飙升,监控显示 OpenAI 接口超时率突破 40%,但本地 vLLM 实…

2026/10/13 21:30:25 阅读更多 →
imgsTools图片合并实战:基于Python和Pillow的拼接与批处理

imgsTools图片合并实战:基于Python和Pillow的拼接与批处理

简介:这是一份面向游戏开发者的图片合并工具 imgsTools 完整工程,基于 VALib 图像库与 MFC、GDI 技术实现,用于把多张图片合并为透明 PNG、GIF、JPEG,并生成 Cocos2d 可识别的 .plis 资源清单。PNG 适合精细界面元素与图标&#x…

2026/10/13 21:29:24 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →