简体   繁体   English

opencv detectMultiScale

[英]opencv detectMultiScale

Im trying to learn opencv and object detection. 我试图学习opencv和对象检测。 I used objecdetection.cpp in opencv samples and when I run it I get this error 我在opencv示例中使用了objecdetection.cpp,当我运行它时,我得到了这个错误

在此输入图像描述

The cascade loads perfectly fine and also the camera the only problem is detectmultiscale because whenever i commented it out the program doesn't crash here is the code of objectdecetion2.cpp 级联加载完全正常,相机唯一的问题是detectmultiscale因为每当我评论出程序不崩溃这里是objectdecetion2.cpp的代码

    #include "opencv2/objdetect.hpp"
    #include "opencv2/videoio.hpp"
    #include "opencv2/highgui.hpp"
    #include "opencv2/imgproc.hpp"

    #include <iostream>
    #include <stdio.h>

    using namespace std;
    using namespace cv;

    /** Function Headers */
    void detectAndDisplay(Mat frame);

    /** Global variables */
    String face_cascade_name = "..\\Debug\\haarcascade_frontalface_alt.xml";
    String eyes_cascade_name = "..\\Debug\\haarcascade_eye_tree_eyeglasses.xml";
    CascadeClassifier face_cascade;
    CascadeClassifier eyes_cascade;
    String window_name = "Capture - Face detection";
    /**
    * @function main
    */
    int main(void)
    {
        VideoCapture capture;
        Mat frame;

        //-- 1. Load the cascade
        if (!face_cascade.load(face_cascade_name)){ printf("--(!)Error loading face cascade\n"); return -1; };
        if (!eyes_cascade.load(eyes_cascade_name)){ printf("--(!)Error loading eyes cascade\n"); return -1; };

        //-- 2. Read the video stream
        capture.open(0);
        if (!capture.isOpened()) { printf("--(!)Error opening video capture\n"); return -1; }

        while (capture.read(frame))
        {
            if (frame.empty())
            {
                printf(" --(!) No captured frame -- Break!");
                break;
            }

            //-- 3. Apply the classifier to the frame
            detectAndDisplay(frame);


            //-- bail out if escape was pressed
            int c = waitKey(10);
            if ((char)c == 27) { break; }
        }
        return 0;
    }

    /**
    * @function detectAndDisplay
    */
    void detectAndDisplay(Mat frame)
    {
        std::vector<Rect> faces;
        Mat frame_gray;

        cvtColor(frame, frame_gray, COLOR_BGR2GRAY);
        equalizeHist(frame_gray, frame_gray);

        face_cascade.detectMultiScale(frame_gray, faces, 1.1, 2, 0, Size(80, 80));

        imshow(window_name, frame);
    }

You are likely experiencing an OpenCV bug, described here: http://code.opencv.org/issues/3710 您可能遇到过OpenCV错误,如下所述: http//code.opencv.org/issues/3710

The code you posted looks OK to me, otherwise. 您发布的代码看起来不错,否则。

The code you posted is right! 你发布的代码是对的! But I doubt that your opencv configuration is not right! 但我怀疑你的opencv配置是不对的! If you work on windows, Please check your .dll files and lib files! 如果您在Windows上工作,请检查.dll文件和lib文件!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM