首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【失败也分享】C++ OpenCV人脸Delaunay三角形提取及仿射变换的使用

前言 最近这几篇OpenCV相关的文章都是与人脸有关,其实最主要是就是想做人脸替换的小试验,大概流程是: 人脸检测 人脸特征点提取 计算Delaunay三角形 得到的三角形进行区域对应的仿射变换...OpenCV中实现Delaunay三角剖分可以使用Subdiv2D,先定义一个分析的Rect空间,然后将要剖分的点都insert进去,使用getTriangleList获取Delaunay三角形的列表。...微卡智享 仿射变换的介绍可以看《Android OpenCV(十一):图像仿射变换》,其中最关系的计算仿射矩阵getAffineTransform,是通过3个点来计算的,正好用我们剖分好的三角形的三个顶点计算...总结 虽然说Demo是个半成品,不过对自己现在来说也是有收获的,了解了Delaunay三角剖分,仿射变换的简单使用以及C++的模版函数的使用。...所谓经验,就是经历的过程+经历的结果,只有这两点自己都经历过后,才算是得到的经验。

1.6K30

用C++模拟奇怪的手机计算器

问题的起源是网友发现手机计算器上计算10%+10%这样的小学数学范畴的运算时,手机计算器得出的结果并不是标准数学答案0.2,而是让人觉得有点奇怪的0.11!...这个计算逻辑相当于我们的200+200*15%。再来个稍微复杂点的200+10%+10%,你可以在你的手机上用计算器试试看,结果是不是242!...所以,手机上这个“奇怪“的计算器的计算逻辑就是如此,搞清这个设计思路以后,会发现这个计算器一点也不奇怪。以此思路,编写了一个简单的c++程序来模拟一下这个计算结果。...为简化代码,本程序只考虑了加法和减法,输入的数字默认是%前的数字部分,负数代表减法(例输入200,表示为加200%,输入-20,表示减20%),0代表结束输入。在DEV C++下调试通过。...可以在你的手机计算器上核对下结果是否一致!

87500
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    OpenCV人脸检测与三角剖分绘制

    二:OpenCV中相关API支持 Subdiv2D对象是OpenCV中用来生成三角剖分,并且获取三角剖分全部三角形的工具类,主要方法如下: - Subdiv2D subdiv // 定义三角剖分 - initDelaunay...(Rect rect) // 初始化三角剖分对象 - subdiv.insert(Point 2f); // 插入三角剖分的顶点 - subdiv.getTriangleList(std::vector... &triangleList); // 获取三角形数据 三:OpenCV基于人脸的三角剖分实现 现在很多人脸识别演示场景都支持实时绘制人脸的三角剖分之后的全部三角形,感觉是非常的帅,特别是大屏投影显示...利用OpenCV的HAAR级联检测器实现人脸检测,然后基于人脸检测结果通过LBF人脸Landmark检测器实现人脸68个特征点的拟合,然后根据拟合的68个点调用Subdiv2D类的相关API就可以生成人脸三角剖分...人脸检测结果 ? 三角剖分绘制 ?----

    2.8K20

    C++程序编译之谜(一)——多文件编译的奇怪现象

    1、奇怪的现象 在C++多文件编译的时候,很多人都会经常碰见这样的一种情况,在一个cpp文件中调用另一个cpp文件的函数,那么可以直接调用吗?我们来做个试验。...可以运行通过输出结果吗?...但是这个还没完,要生成可执行文件,还要将以上cpp文件生成的二进制文件进行链接起来,并且有个文件中还要提供一个main函数入口,因为C++语言的可执行文件的入口是main函数,不提供的话程序无法运行。...,就会输出正确结果,不会报错了。...main.cpp文件中导入了add.h的头文件,那么IDE会自动去寻找看看是否有add.cpp文件,有的话进行编译、链接,输出结果。

    25210

    C++ OpenCV去燥函数fastNlMeansDenoising的使用

    学更好的别人, 做更好的自己。...——《微卡智享》 本文长度为1857字,预计阅读5分钟 前言 在使用OpenCV进行图像处理时,一般都使用高斯滤波或是中值滤波进行去噪,原理也是选取像素周围一个小的邻域铂高斯或中值平均取代中心像素。...上图中右边为使用fastNlMeansDenoising去燥后的效果,可以看出来,整张图片的清晰度和原图基本无变化 ,标红框的地方可以看到平滑了好多。如果使用高斯或是中值滤波,图像会变的模糊些。...h 值高可以很好的去除噪声,但也会把图像的细节抹去。(取 10 的效果不错) //hColor 与h相同,使用于彩色图像 //templateWindowSize 奇数。...(推荐值为 21) 完整代码 #include #include opencv2/opencv.hpp> #include "CvUtils.h" using namespace

    3.1K40

    C++ OpenCV在Visual Studio中的配置

    本文介绍在Visual Studio 2022中配置、编译C++计算机视觉库OpenCV的方法(再介绍一次,上次忘记设置原创了)。...1 OpenCV库配置   首先,我们进行OpenCV库的下载与安装。...随后,即可在弹出的新界面中自动开始OpenCV库的下载。   下载完毕后,可以得到OpenCV库的.exe格式文件。   ...我们双击这一.exe格式文件,即可开始OpenCV库的文件提取过程,也就相当于是安装过程;其中,我们首先需要选择OpenCV库安装的路径。   随后,即可开始OpenCV库的文件提取。...接下来,按照Visual Studio调用已配置好的C++库的方法提到的方法,分别进行OpenCV库的附加包含目录、附加库目录与附加依赖项的配置。

    1.2K30

    C++ 下 Halcon 与 OpenCV 图像的转换

    Halcon 中的图像数据结构为 HImage, OpenCV 中的图像为 Mat,使用中经常需要相互转换的情况,本文记录转换方式。...转换规则 halcon、opencv 和 C++图像内存数据处理机制有差异,在进行相互转换的时候需要注意内存数据排列问题,否则可能出现花图或者多出黑边等现象。...Halcon 的 HImage 和 OpenCV 的 Mat 都是连续存储图像数据的,HImage 存储数据是每个通道的数据存在一起的, Mat 的数据是一个像素点中的多个通道数据连续存在一起的。...,HImage 图像仍为多个通道单独处理内存的情况,内存拷贝时需要注意转换前后的图像的位深度一致 示例代码 #include #includeopencv2/opencv.hpp>...直接上示例代码 示例代码 #include #includeopencv2/opencv.hpp> #include"HalconCpp.h" #include usingnamespace

    2.2K20

    CVPR论文复现争议后续:华人一作苦战两月给出有态度的分析结果

    今天,经过两个多月的苦战,一作(华人,当时文章未特意指出担心带偏节奏)给出了一份小编觉得很有态度的结果,并在结语中分享了自己两个月来的感受,希望能对读者有所启发。「让我们继续探索、研究、分享吧!」...作者称这种做法表现良好,但我的复现结果并不理想,因此我决定对其进行测试。作者提供了他们用的代码,但是经过仔细检查,我发现他们的测试准确率计算有误,导致得出的所有结果无效。」...在收到反馈后,论文作者做出了积极回应,称他们「计划透彻分析下这篇文章,在十分确定之后给出进一步的回应。可视化器中光滑函数的默认配置是疏忽点,我们进行了修改。」...今天,《Perturbative Neural Networks》论文作者给出了修改后的结果,他调查了 Michael Klachko 的实现过程,并在 GitHub 上给出了分析结果:(1)Michael...声称的性能下降(约 5%)主要原因在于其在 PNN 实现过程与论文作者给出的代码存在多处不一致,以及选择的超参数并非最优。

    58420

    C++ OpenCV透视变换改进---直线拟合的应用

    前言 前一篇《C++ OpenCV透视变换综合练习》中针对透视变换做了一个小练习,上篇中我们用多边形拟合的点集来计算离最小旋转矩形最近的点来定义为透视变换的点,效果是有,无意间又想了一个新的思路,在原来的点的基础上效果会更好一点...,其中就用到了直线拟合的方法,今天这篇就说一下优化的思路及直线拟合的函数。...line: 输出的直线,对于二维直线而言类型为cv::Vec4f,对于三维直线类型则是cv::Vec6f,输出参数的前半部分给出的是直线的方向,而后半部分给出的是直线上的一点(即通常所说的点斜式直线)。...紫色线即为上面4个点采用直线拟合后的结果 左边的区域拟合直线,因为都在阈值内,所以拟合出的直线比原来只求最近点连起来的效果要更好一点。接下来我们看看超过阈值的处理。 02 超出阈值的直线拟合 ?...直线拟合的函数,输出的参数line里面有说到了是Vec4f的类型,输出参数的前半部分给出的是直线的方向,而后半部分给出的是直线上的一点(即通常所说的点斜式直线)。

    1.4K10

    现在看音乐家无声表演视频,AI也能给出正确的结果

    它可以从音乐家演奏乐器的无声视频中产生“貌似合理”的音乐。...认知心理学的研究表明,人类早已拥有这种技能——即使是年幼的儿童,他们听到的内容也会受说话人的肢体行为影响。...给定了动作的关键点和音乐的MIDI事件,模型中的“图形变换器”模块会拟合一个映射函数,将动作与音乐联系起来,捕捉人体动态和音乐变化的潜在联系。...作者写道,“结果表明,通过身体关键点和MIDI表示可以很好地建立视觉和音乐信号之间的关联。另外,MIDI表征形式让我们的框架可以很容易地扩展到不同形式的音乐。...我们预计,我们的工作将开启未来的一系列关于使用人体关键点和MIDI事件研究视频和音乐之间联系的研究。”

    1.4K30

    图像的膨胀与腐蚀——OpenCV与C++的具体实现

    膨胀与腐蚀的原理 2. 膨胀的具体实现 1) OpenCV实现 2) C/C++实现 3) 验证与结果 3. 腐蚀的具体实现 1. 膨胀与腐蚀的原理 膨胀与腐蚀是数学形态学在图像处理中最基础的操作。...膨胀的具体实现 1) OpenCV实现 在OpenCV中实现了图像膨胀的函数dilate(),可以直接调用: Mat img = imread(imagename, IMREAD_GRAYSCALE);...2) C/C++实现 在一般的图像处理时,图像读写是由专门的组件进行读取的。这这里仍然使用OpenCV进行读取,以免增加复杂性。...与之前OpenCV实现的一样,对于每一个像素,遍历以其像素位置为中心的3X3邻域,取最大值作为新图像对应位置的像素值。...为了验证自己的算法是否正确,可以通过把两者膨胀的结果通过compare()函数进行比较。

    3.1K21
    领券