用vs通过c++、opencv、dlib实现视频换脸效果
我们经常看见抖音里面有换脸的特效,那么怎么实现的呢,其实opencv及dlib提供一个开源的库,只要调用一下就ok了,脸部模型直接下载一下就ok了,上面两张图片是两个人的脸部视频,我们看处理完之后的效果。
女主的脸换上了男主的脸,看上去有点猥琐,哈哈,但是女主的脸换到男主头上看上去有点小清新,好了,那么我们讲一下怎么通过代码实现吧。
核心的代码就是通过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或更高版本
二、下载源码
也可以从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 并放置在项目目录中
之后,运行这个项目,就可以实现了
网友评论0