用vs通过c++、opencv、dlib实现视频换脸效果

用vs通过c++、opencv、dlib实现视频换脸效果

用vs通过c++、opencv、dlib实现视频换脸效果

我们经常看见抖音里面有换脸的特效,那么怎么实现的呢,其实opencv及dlib提供一个开源的库,只要调用一下就ok了,脸部模型直接下载一下就ok了,上面两张图片是两个人的脸部视频,我们看处理完之后的效果。

用vs通过c++、opencv、dlib实现视频换脸效果

女主的脸换上了男主的脸,看上去有点猥琐,哈哈,但是女主的脸换到男主头上看上去有点小清新,好了,那么我们讲一下怎么通过代码实现吧。

核心的代码就是通过opencv获取视频数据进行模型识别,然后输出流

    small_frame = getMinFrame(frame, rect_ann, rect_bob);

    frame_size = cv::Size(small_frame.cols, small_frame.rows);

    getFacePoints(small_frame);

    getTransformationMatrices();

    mask_ann.create(frame_size, CV_8UC1);
    mask_bob.create(frame_size, CV_8UC1);
    getMasks();

    getWarppedMasks();

    refined_masks = getRefinedMasks();

    extractFaces();

    warpped_faces = getWarppedFaces();

    colorCorrectFaces();

    auto refined_mask_ann = refined_masks(big_rect_ann);
    auto refined_mask_bob = refined_masks(big_rect_bob);
    featherMask(refined_mask_ann);
    featherMask(refined_mask_bob);

    pasteFacesOnFrame();

那么具体怎么运行这个实例呢?

一、下载OpenCV和dlib

opencv下载地址 https://sourceforge.net/projects/opencvlibrary/files/4.3.0/opencv-4.3.0-vc14_vc15.exe/download

dlib下载地址 http://dlib.net/

设置OpenCV

运行下载的OpenCV可执行文件,然后选择一个目录以提取OpenCV库(例如D: opencv)
设置dlib

将下载的zip文件解压缩到目录(例如D: dlib)
下载并安装Visual Studio 2015或更高版本

二、下载源码

FaceSwap-master.zip

也可以从git上下载

https://github.com/hrastnik/FaceSwap

下载完后我们来运行

运行Visual Studio

创建一个新的空项目并为其命名(例如MyProject)

确保选择“调试”解决方案配置

在Visual Studio中,打开“解决方案资源管理器”窗口

右键单击MyProject,然后选择属性

单击左上角的“配置管理器...”按钮

设置调试配置

在活动解决方案平台中,选择x64

关闭配置管理器窗口

在属性窗口中,确保左上角的选定配置为“ Debug”,平台为“ x64”

在左侧面板中,选择C / C ++

在“附加包含目录”字段中,添加两个目录:

“ D: opencv \ opencv \ build \ include”
“ D: dlib \ dlib-19.2”

请注意,如果您使用的是不同的dlib版本,则路径可能会有所不同

在左侧面板中,选择链接器>常规

在其他库目录中,添加“ D: opencv \ opencv \ build \ x64 \ vc14 \ lib”

请注意,如果您使用不同的体系结构或VS版本,则路径可能会有所不同

在左侧面板中,选择链接器>输入

在其他依赖项中添加“ opencv_world320d.lib”

点击应用

将左上方的“配置”更改为“发布”并重复

设置发布的配置

在左侧面板中,选择C / C ++

在“附加包含目录”字段中,添加两个目录:

“ D: opencv \ opencv \ build \ include”

“ D: dlib \ dlib-19.2”

请注意,如果您使用的是不同的dlib版本,则路径可能会有所不同

在左侧面板中,选择链接器>常规

在其他库目录中,添加“ D: opencv \ opencv \ build \ x64 \ vc14 \ lib”

请注意,如果您使用不同的体系结构或VS版本,则路径可能会有所不同

在左侧面板中,选择链接器>输入

在其他依赖项中添加“ opencv_world320.lib”

关闭属性窗口

在解决方案资源管理器中右键单击源文件

选择“添加现有项...”,然后从该项目中添加.cpp文件

在解决方案资源管理器中右键单击头文件

选择“添加现有项...”,然后从该项目中添加.h文件

将haarcascade_frontalface_default.xml从OpenCV的sources / data / haarcascades目录复制到项目目录

从http://sourceforge.net/projects/dclib/files/dlib/v18.10/shape_predictor_68_face_landmarks.dat.bz2下载,这个有61M,下载完成然后将shape_predictor_68_face_landmarks.dat 并放置在项目目录中

之后,运行这个项目,就可以实现了

{{collectdata}}

网友评论0