Error using setSVMDetector of HOGDescriptor

asked 2016-05-31 09:24:34 -0600

Hi everyone, I'm new using HOGDescriptor, and I find out as long as the code runs to this line:

      hog.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector());

there code will be interrupted and show an error about "un-dealing situation" and "violation".

I don't know if there is any further step I need to do on "getDefaultPeopleDetector()" or anything else ?

Here is my whole code:

#include <iostream>
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main(int argc, const char * argv[])
{
VideoCapture cap("D:\\DataBox\\VIDEO\\withbackground.mov");
cap.set(CV_CAP_PROP_FRAME_WIDTH, 320);
cap.set(CV_CAP_PROP_FRAME_HEIGHT, 240);
if (!cap.isOpened())
    return -1;

Mat img;
HOGDescriptor hog;
hog.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector());

namedWindow("video capture", CV_WINDOW_AUTOSIZE);
while (true)
{
    cap >> img;
    if (!img.data)
        continue;

    vector<Rect> found, found_filtered;
    hog.detectMultiScale(img, found, 0, Size(8, 8), Size(32, 32), 1.05, 2);

    size_t i, j;
    for (i = 0; i<found.size(); i++)
    {
        Rect r = found[i];
        for (j = 0; j<found.size(); j++)
            if (j != i && (r & found[j]) == r)
                break;
        if (j == found.size())
            found_filtered.push_back(r);
    }
    for (i = 0; i<found_filtered.size(); i++)
    {
        Rect r = found_filtered[i];
        r.x += cvRound(r.width*0.1);
        r.width = cvRound(r.width*0.8);
        r.y += cvRound(r.height*0.06);
        r.height = cvRound(r.height*0.9);
        rectangle(img, r.tl(), r.br(), cv::Scalar(0, 255, 0), 2);
    }
    imshow("video capture", img);
    waitKey(1);
}
return 0;

}

edit retag flag offensive close merge delete

Comments

1

You need to properly initialize HOG params (cells, blocks, bins, ...) before calling setSVMDetector

LorenaGdL gravatar imageLorenaGdL ( 2016-05-31 11:30:42 -0600 )edit

But I saw lots of website just type like I did, shoudln't it be the default value of hog?

HenryChen1620 gravatar imageHenryChen1620 ( 2016-05-31 18:38:34 -0600 )edit
1

can you give us the exact error you're getting ?

(and your code works fine for me, (3.1, win, mingw))

berak gravatar imageberak ( 2016-06-01 00:27:24 -0600 )edit
1

can it be, you're accidentally mixing opencv debug / release libs with VS ?

berak gravatar imageberak ( 2016-06-01 01:41:30 -0600 )edit