VS2022 编译 SeetaFace6

部署运行你感兴趣的模型镜像

参考:https://github.com/SeetaFace6Open/index

一、下载源码

        使用以下命令下载源码

git clone --recursive https://github.com/SeetaFace6Open/index.git

二、编译模块

        如果直接使用官方以下命令进行编译是会报错的

cd ./craft
执行脚本 build.win.vc14.all.cmd 编译各个版本的库(gpu版本为build.win.vc14.all_gpu.cmd)

        所以我们自己使用Cmake来编译,因为模块之间有引用关系所以一定要按以下顺序:OpenRoleZoo -> SeetaAuthorize -> TenniS,然后再进行其他模块的编译。

2.1、编译 OpenRoleZoo         

        修改 SeetaFace6Open\index\OpenRoleZoo\include\orz\mem\pot.h 文件,添加 #include <functional> 引用,如下图所示:

        在 Windows 搜索栏输入 "Developer Command Prompt for VS 2022"(或 "VS 2022 开发人员命令提示符"),右键以管理员身份运行。       

        命令行进入 SeetaFace6Open\index\OpenRoleZoo 路径,执行以下命令:

mkdir build_vs2022
cd build_vs2022

cmake .. ^
    -G "Visual Studio 17 2022" ^
    -A x64 ^
    -DCMAKE_BUILD_TYPE=Release ^
    -DORZ_WITH_OPENSSL=OFF ^
    -DCMAKE_INSTALL_PREFIX="../../build"

cmake --build . --config Release --target install

        编译完成可以在 SeetaFace6Open\index\build 找到编译好的库。

2.2、编译 SeetaAuthorize

        进入 SeetaFace6Open\index\SeetaAuthorize 路径下执行以下命令,编译 SeetaAuthorize 模块:

mkdir build_vs2022
cd build_vs2022

cmake .. ^
    -G "Visual Studio 17 2022" ^
    -A x64 ^
    -DCMAKE_BUILD_TYPE=Release ^
    -DCMAKE_INSTALL_PREFIX="../../build" ^
    -DORZ_ROOT_DIR="../build"

cmake --build . --config Release --target install

2.3、编译 TenniS

        进入 SeetaFace6Open\index\TenniS 路径下执行以下命令,编译 TenniS 模块:

mkdir build_vs2022
cd build_vs2022

cmake .. ^
    -G "Visual Studio 17 2022" ^
    -A x64 ^
    -DCMAKE_BUILD_TYPE=Release ^
    -DCMAKE_INSTALL_PREFIX="../../build" ^
    -DTS_ON_HASWELL=ON ^
    -DTS_USE_FAST_MATH=ON ^
    -DTS_USE_OPENMP=ON

cmake --build . --config Release --target install

2.4、编译 FaceBoxes

         进入 SeetaFace6Open\index\FaceBoxes 路径下执行以下命令,编译 FaceBoxes 模块:

mkdir build_vs2022
cd build_vs2022


cmake .. ^
    -G "Visual Studio 17 2022" ^
    -A x64 ^
    -DCMAKE_BUILD_TYPE=Release ^
    -DCMAKE_INSTALL_PREFIX="%cd%/../../build" ^
    -DCMAKE_PREFIX_PATH="%cd%/../../build" ^
    -DORZ_ROOT_DIR="%cd%/../../build" ^
    -DSEETA_AUTHORIZE=ON ^
    -DSEETA_MODEL_ENCRYPT=ON ^
    -DCMAKE_LIBRARY_PATH="%cd%/../../build/lib/x64"


cmake --build . --config Release --target install

2.5、编译 Landmarker

         进入 SeetaFace6Open\index\Landmarker 路径下执行以下命令,编译 Landmarker 模块:

mkdir build_vs2022
cd build_vs2022


cmake .. ^
    -G "Visual Studio 17 2022" ^
    -A x64 ^
    -DCMAKE_BUILD_TYPE=Release ^
    -DCMAKE_INSTALL_PREFIX="%cd%/../../build" ^
    -DCMAKE_PREFIX_PATH="%cd%/../../build" ^
    -DORZ_ROOT_DIR="%cd%/../../build" ^
    -DSEETA_AUTHORIZE=ON ^
    -DSEETA_MODEL_ENCRYPT=ON ^
    -DCMAKE_LIBRARY_PATH="%cd%/../../build/lib/x64"


cmake --build . --config Release --target install

 2.6、编译 FaceRecognizer6

         进入 SeetaFace6Open\index\FaceRecognizer6 路径下执行以下命令,编译 FaceRecognizer6 模块:

mkdir build_vs2022
cd build_vs2022


cmake .. ^
    -G "Visual Studio 17 2022" ^
    -A x64 ^
    -DCMAKE_BUILD_TYPE=Release ^
    -DCMAKE_INSTALL_PREFIX="%cd%/../../build" ^
    -DCMAKE_PREFIX_PATH="%cd%/../../build" ^
    -DORZ_ROOT_DIR="%cd%/../../build" ^
    -DSEETA_AUTHORIZE=ON ^
    -DSEETA_MODEL_ENCRYPT=ON ^
    -DCMAKE_LIBRARY_PATH="%cd%/../../build/lib/x64"


cmake --build . --config Release --target install

 2.7、编译 FaceTracker6

         进入 SeetaFace6Open\index\FaceTracker6 路径下执行以下命令,编译 FaceTracker6 模块:

mkdir build_vs2022
cd build_vs2022


cmake .. ^
    -G "Visual Studio 17 2022" ^
    -A x64 ^
    -DCMAKE_BUILD_TYPE=Release ^
    -DCMAKE_INSTALL_PREFIX="%cd%/../../build" ^
    -DCMAKE_PREFIX_PATH="%cd%/../../build" ^
    -DORZ_ROOT_DIR="%cd%/../../build" ^
    -DSEETA_AUTHORIZE=ON ^
    -DSEETA_MODEL_ENCRYPT=ON ^
    -DCMAKE_LIBRARY_PATH="%cd%/../../build/lib/x64"


cmake --build . --config Release --target install

 2.8、编译 PoseEstimator6

         进入 SeetaFace6Open\index\PoseEstimator6 路径下执行以下命令,编译 PoseEstimator6 模块:

mkdir build_vs2022
cd build_vs2022


cmake .. ^
    -G "Visual Studio 17 2022" ^
    -A x64 ^
    -DCMAKE_BUILD_TYPE=Release ^
    -DCMAKE_INSTALL_PREFIX="%cd%/../../build" ^
    -DCMAKE_PREFIX_PATH="%cd%/../../build" ^
    -DORZ_ROOT_DIR="%cd%/../../build" ^
    -DSEETA_AUTHORIZE=ON ^
    -DSEETA_MODEL_ENCRYPT=ON ^
    -DCMAKE_LIBRARY_PATH="%cd%/../../build/lib/x64"


cmake --build . --config Release --target install

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

<think>好的,用户的问题是关于在MFC环境中编译SeetaFace6的教程和常见问题解决方案。首先,我需要回忆一下SeetaFace6编译流程,尤其是与MFC相关的部分。用户可能在使用Visual Studio,特别是VS2015或者更新的版本,但引用的例子是VS2013,所以需要注意版本差异带来的问题。 首先,我应该检查用户提到的参考内容,引用[1]中提到了用VS2013打开examples.sln,但用户可能是在VS2015或更高版本中遇到了问题。需要提醒用户注意项目升级后的配置问题,比如平台工具集是否匹配,第三方库的依赖是否正确。 接下来,我需要分步骤来指导用户如何在MFC环境中编译SeetaFace6。可能包括环境准备、项目配置、依赖项添加、代码调整以及常见错误的处理。例如,MFC项目可能需要额外的库文件或者头文件路径的设置,特别是SeetaFace6的依赖项如OpenCV、模型文件等是否正确放置。 另外,用户可能遇到链接错误,比如无法找到SeetaFace的库文件,这时候需要确认库目录是否正确,以及是否在链接器输入中添加了相应的.lib文件。还有可能出现运行时错误,比如模型文件路径不正确,需要提醒用户将模型文件放在生成目录或者正确设置路径。 常见问题方面,可能包括第三方库的版本兼容性问题,比如OpenCV的版本是否与SeetaFace6兼容,或者C++运行时库的配置是否正确(MT/MD)。还有可能出现MFC和SeetaFace的字符编码冲突,比如Unicode和多字节字符集的问题,需要调整项目属性。 最后,生成相关问题时,需要覆盖用户可能进一步遇到的疑问,比如如何在MFC中调用SeetaFace6的接口,如何集成人脸检测功能,或者如何处理多线程中的问题。确保用户有一个全面的解决方案路径。</think>以下是在MFC环境中编译SeetaFace6的详细步骤及常见问题解决方案: ### 一、环境准备 1. 安装Visual Studio 2015/2017/2019(建议使用与SeetaFace6兼容的2019版) 2. 下载SeetaFace6 SDK(包含头文件、静态库和模型文件) 3. 安装依赖项: - OpenCV 3.4.10(需配置环境变量`OPENCV_DIR`) - CMake 3.12+(用于编译第三方依赖) ### 二、项目配置流程 1. **创建MFC项目** - 选择"MFC应用程序"模板 - 配置为"使用Unicode字符集"和"在静态库中使用MFC" 2. **添加头文件路径** ```cpp // 在项目属性->C/C++->附加包含目录添加: $(SEETA_DIR)\include $(OPENCV_DIR)\include ``` 3. **配置库目录** ```cpp // 在链接器->常规->附加库目录添加: $(SEETA_DIR)\lib\$(Platform)\$(Configuration) $(OPENCV_DIR)\lib ``` 4. **添加依赖库** ```cpp // 在链接器->输入->附加依赖项添加: SeetaFaceDetector600.lib SeetaFaceRecognizer610.lib opencv_world3410.lib ``` ### 三、常见编译问题解决 1. **LNK2019未解析外部符号错误** - 检查`#pragma comment(lib, "SeetaFaceDetector600.lib")`是否添加 - 确认运行时库设置一致(MT/MD) 2. **C2440无法转换cv::Mat** ```cpp // 需要显式类型转换 cv::Mat img = ...; auto detector = new seeta::FaceDetector(model_path); auto faces = detector->detect(seeta::cv::ImageData(img)); // 使用转换函数[^1] ``` 3. **模型加载失败** - 将模型文件放入生成目录的`models`子目录 - 使用绝对路径加载模型: ```cpp CString modelPath = _T("D:\\Project\\models\\face_detector.csta"); ``` ### 四、MFC界面集成示例 ```cpp void CMyDialog::OnBnClickedDetect() { cv::Mat frame; // 获取图像数据 CImage mfcImg; mfcImg.Load(_T("test.jpg")); frame = cv::Mat(mfcImg.GetHeight(), mfcImg.GetWidth(), CV_8UC4, mfcImg.GetBits()); // 执行检测 auto faces = detector->detect(frame); // 显示结果 for (auto& face : faces) { cv::rectangle(frame, cv::Rect(face.pos.x, face.pos.y, face.pos.width, face.pos.height), cv::Scalar(0,255,0), 2); } // 转换回MFC图像显示... } ``` ### 五、调试技巧 1. 使用`_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF)`检测内存泄漏 2. 在预处理器定义中添加`SEETA_EXPORTS`启用详细日志 3. 对OpenCV和SeetaFace分别初始化: ```cpp cv::utils::logging::setLogLevel(cv::utils::logging::LOG_LEVEL_ERROR); seeta::FaceDetector::SetLogLevel(SEETA_LOG_DEBUG); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值