OpenCV中文网站

 找回密码
 立即注册
搜索
热搜: 安装 配置
查看: 2983|回复: 3

新人求助:cv::face::LBPHFaceRecognizer::train无法识别

[复制链接]
发表于 2019-4-6 10:23:58 | 显示全部楼层 |阅读模式
版本号:
Visual Studio Community 2017
OpenCV 4.0.1
CMake 3.14.1 Win64 x64
opencv_contrib-4.0.1

我按照网上的教程下载了contrib库安装,然后在工程中使用了LBPHFaceRecognizer,但是生成解决方案的时候报错如下(实在抱歉,发帖的时候发不了图片):

无法解析的外部符号 "public: virtual void __cdecl cv::face::FaceRecognizer::train(class cv::debug_build_guard::_InputArray const &,class cv::debug_build_guard::_InputArray const &)" (?train@FaceRecognizer@face@cv@@UEAAXAEBV_InputArray@debug_build_guard@3@0@Z),该符号在函数 "private: void __cdecl GraduationProject::FaceRecognition(struct D2D_RECT_F,struct ID2D1HwndRenderTarget *,class cv::Mat)" (?FaceRecognition@GraduationProject@@AEAAXUD2D_RECT_F@@PEAUID2D1HwndRenderTarget@@VMat@cv@@@Z) 中被引用

从报错中可以看出错误出自train函数:

cv:tr<cv::face:BPHFaceRecognizer> model = cv::face:BPHFaceRecognizer::create(1, 8, 8, 8, 50);
model->cv::face:BPHFaceRecognizer::train(images, labels);
res = model->cv::face:BPHFaceRecognizer::predict(FaceLocationGrayScale);

我个人认为错误来自于CMake过程,因为按照教程CMake contrib库时,第一次configure结束后框中显示红色,我按提示又点了一次configure框中才变为白色,接下来就是generate和运行sln文件并编译。

恳请各位指点
回复

使用道具 举报

 楼主| 发表于 2019-4-6 10:27:55 | 显示全部楼层
那个是Ptr和LBPHFaceRecognizer
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-6 11:21:10 | 显示全部楼层
报错是LNK2019
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-6 12:24:06 | 显示全部楼层
刚发现LNK2019也有可能是函数输入参数类型不对,现附上整个函数如下:
void GraduationProject::FaceRecognition(D2D_RECT_F HeadLocation, ID2D1HwndRenderTarget* m_pRenderTarget, cv::Mat FaceLocationGrayScale)
{
        int res = -1;
        std::vector<cv::Mat> images;
        std::vector<int> labels;
        images.push_back(cv::imread("person01.jpg", cv::IMREAD_GRAYSCALE));
        labels.push_back(0);
        images.push_back(cv::imread("person02.jpg", cv::IMREAD_GRAYSCALE));
        labels.push_back(0);
        images.push_back(cv::imread("person03.jpg", cv::IMREAD_GRAYSCALE));
        labels.push_back(0);
        images.push_back(cv::imread("person04.jpg", cv::IMREAD_GRAYSCALE));
        labels.push_back(0);
        images.push_back(cv::imread("person11.jpg", cv::IMREAD_GRAYSCALE));
        labels.push_back(1);
        images.push_back(cv::imread("person12.jpg", cv::IMREAD_GRAYSCALE));
        labels.push_back(1);
        images.push_back(cv::imread("person13.jpg", cv::IMREAD_GRAYSCALE));
        labels.push_back(1);
        images.push_back(cv::imread("person14.jpg", cv::IMREAD_GRAYSCALE));
        labels.push_back(1);
        cv:tr<cv::face:BPHFaceRecognizer> model = cv::face:BPHFaceRecognizer::create(1, 8, 8, 8, 50);
        model->cv::face:BPHFaceRecognizer::train(images, labels);
        res = model->cv::face:BPHFaceRecognizer::predict(FaceLocationGrayScale);
        if (res == -1)
                m_pRenderTarget->DrawRectangle(&HeadLocation, m_pBrushStranger);
        else
                m_pRenderTarget->DrawRectangle(&HeadLocation, m_pBrushFamiliar);
}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站

GMT+8, 2024-4-19 01:29 , Processed in 0.009404 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表