首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只有CascadeClassifier产生未定义的引用错误。

只有CascadeClassifier产生未定义的引用错误。
EN

Stack Overflow用户
提问于 2018-10-13 15:41:05
回答 1查看 702关注 0票数 0

这是Qt pro文件的libs部分。

代码语言:javascript
复制
LIBS += -LD:/opencv-build/bin/ -llibopencv_core320
LIBS += -LD:/opencv-build/bin/ -llibopencv_highgui320
LIBS += -LD:/opencv-build/bin/ -llibopencv_imgcodecs320
LIBS += -LD:/opencv-build/bin/ -llibopencv_imgproc320
LIBS += -LD:/opencv-build/bin/ -llibopencv_features2d320
LIBS += -LD:/opencv-build/bin/ -llibopencv_calib3d320
LIBS += -LD:/opencv-build/bin/ -llibopencv_videoio320
LIBS += -LD:/opencv-build/bin/ -llibopencv_video320

这是一个代码(唯一使用CascadeClassifier的部分)。

代码语言:javascript
复制
cv::String faceCascade = ":/resources/haarcascade_frontalface_alt.xml";
cv::String eyeCascade = ":/resources/haarcascade_eye.xml";
CascadeClassifier faceClassifier;
CascadeClassifier eyeClassifier;

Mat Tracker::detectEyes(Mat& img){
    Mat gray;
    Mat result;
    faceClassifier.load(faceCascade);
    eyeClassifier.load(eyeCascade);
    cvtColor(img, gray, CV_BGR2GRAY);
    std::vector<Rect> face_pos;
    faceClassifier.detectMultiScale(gray, face_pos, 1.1, 3, 0 | CV_HAAR_SCALE_IMAGE, Size(10, 10));
    for (int i = 0; i < static_cast<int>(face_pos.size()); i++)    {
        rectangle(result, face_pos[i], Scalar(0, 255, 0), 2);
    }
    for (int i = 0; i < static_cast<int>(face_pos.size()); i++) {
        std::vector<Rect> eye_pos;
        Mat roi = gray(face_pos[i]);
        eyeClassifier.detectMultiScale(roi, eye_pos, 1.1, 3, 0 | CV_HAAR_SCALE_IMAGE, Size(10, 10));
        for (int j = 0; j < static_cast<int>(face_pos.size()); j++) {
            Point center(face_pos[i].x + eye_pos[j].x + (eye_pos[j].width / 2),
                       face_pos[i].y + eye_pos[j].y + (eye_pos[j].height / 2));
            int radius = cvRound((eye_pos[j].width + eye_pos[j].height) * 0.2);
            circle(result, center, radius, Scalar(0, 0, 255), 2);
        }
    }
    return result;
}

与CascadeClassifier相关的所有内容都会出错。

代码语言:javascript
复制
C:\Users\Coder\Desktop\qt\tracker.cpp:37: error: undefined reference to `cv::CascadeClassifier::load(cv::String const&)'
C:\Users\Coder\Desktop\qt\tracker.cpp:38: error: undefined reference to `cv::CascadeClassifier::load(cv::String const&)'
C:\Users\Coder\Desktop\qt\tracker.cpp:217: error: undefined reference to `cv::CascadeClassifier::detectMultiScale(cv::_InputArray const&, std::vector<cv::Rect_<int>, std::allocator<cv::Rect_<int> > >&, double, int, int, cv::Size_<int>, cv::Size_<int>)'
C:\Users\Coder\Desktop\qt\tracker.cpp:224: error: undefined reference to `cv::CascadeClassifier::detectMultiScale(cv::_InputArray const&, std::vector<cv::Rect_<int>, std::allocator<cv::Rect_<int> > >&, double, int, int, cv::Size_<int>, cv::Size_<int>)'
C:\Users\Coder\Desktop\qt\tracker.cpp:15: error: undefined reference to `cv::CascadeClassifier::~CascadeClassifier()'
C:\Users\Coder\Desktop\qt\tracker.cpp:16: error: undefined reference to `cv::CascadeClassifier::~CascadeClassifier()'
C:\Users\Coder\Desktop\qt\tracker.cpp:15: error: undefined reference to `cv::CascadeClassifier::CascadeClassifier()'
C:\Users\Coder\Desktop\qt\tracker.cpp:16: error: undefined reference to `cv::CascadeClassifier::CascadeClassifier()'

重要的是,所有其他OpenCV类都能正常工作。我是不是错过了与CascadeClassifier相关的唇语?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-10 21:48:16

添加以下内容:

代码语言:javascript
复制
    `LIBS += -LD:/opencv-build/bin/ -llibopencv_objdetect401` 

到.pro文件,并包括

代码语言:javascript
复制
 `opencv2/objdetect.hpp`

在头文件中

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52794627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档