Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenCV HOG&x2B;SVM:断言失败checkDetectorSize() P>我在C++中遇到了OpenCV问题,当我尝试将自己的SVM检测器设置成HOG:OpenCV中的SETVM检波器(检测器)。_C++_Opencv_Svm_Object Detection - Fatal编程技术网

OpenCV HOG&x2B;SVM:断言失败checkDetectorSize() P>我在C++中遇到了OpenCV问题,当我尝试将自己的SVM检测器设置成HOG:OpenCV中的SETVM检波器(检测器)。

OpenCV HOG&x2B;SVM:断言失败checkDetectorSize() P>我在C++中遇到了OpenCV问题,当我尝试将自己的SVM检测器设置成HOG:OpenCV中的SETVM检波器(检测器)。,c++,opencv,svm,object-detection,C++,Opencv,Svm,Object Detection,我遵循了以下步骤,但仍停留在第3步 我正在使用openCV 3.0,它目前内置在SVM中。 这就是我培训和构建探测器的方式: 训练 建筑物检测器 vector<float> alpha; vector<float> svidx; vector<float> model; // Getting Support Vectors Mat svs = svm->getSupportVectors(); double rho = svm->getDeci

我遵循了以下步骤,但仍停留在第3步

我正在使用openCV 3.0,它目前内置在SVM中。 这就是我培训和构建探测器的方式:

训练

建筑物检测器

vector<float> alpha;
vector<float> svidx;
vector<float> model;

// Getting Support Vectors
Mat svs = svm->getSupportVectors();

double rho = svm->getDecisionFunction(0, alpha, svidx);

    // Computing w in primal form
for (int i = 0; i < svidx.size(); i++) {
    model.push_back(svs.at<float>(i, 0) * alpha.at(i));
    for (int j = 1; j < svs.cols; j++) {
        model.at(i) += svs.at<float>(i, j) * alpha.at(i);
    }
}

//   Adding rho
    model.push_back(rho);
    return model;
OpenCV错误:断言失败 (checkDetectorSize())在setSVMDetector文件中 /home/dario/Desktop/opencv-3.0.0-rc1/modules/objdetect/src/hog.cpp, 在抛出的实例后调用第115行terminate “cv::Exception”什么() /home/dario/Desktop/opencv-3.0.0-rc1/modules/objdetect/src/hog.cpp:115: 错误:(-215)函数setSVMDetector中的checkDetectorSize()


你知道我做错了什么吗?

我把上面的代码改写为

    Ptr<SVM> svm;
    HOGDescriptor my_hog;
    ...
    // Load the trained SVM.
    svm = StatModel::load<SVM>( "model.yml" );
    // Set the trained svm to my_hog
    vector< float > hog_detector;
    get_svm_detector( svm, hog_detector );
    my_hog.setSVMDetector( hog_detector );
Ptr-svm;
我的猪;
...
//加载训练好的支持向量机。
svm=StatModel::load(“model.yml”);
//将经过训练的svm设置为my_hog
向量hog_检测器;
获取_-svm_检测器(svm,hog_检测器);
my_hog.setsvmtodector(hog_detector);

可能是因为您的窗口大小不同,在这种情况下,输入到
hog.setDetector(model)的值的数量也会不同我有一个类似的问题。我想手动将探测器大小设置为没有0.5纵横比的大小。我的理由是,我想检测那些不总是处于完美姿态的人,他们的高宽比不是0.5。考虑拳击手手臂伸直,膝盖弯曲的情况。我想这是不可能的,因为使用了pretraine人员检测分类器。有什么建议吗?也许我需要为此手动训练SVM?您好,您使用的是什么版本的opencv?函数get_svm_检测器是否在opencv中
hog.setDetector(model); 
    Ptr<SVM> svm;
    HOGDescriptor my_hog;
    ...
    // Load the trained SVM.
    svm = StatModel::load<SVM>( "model.yml" );
    // Set the trained svm to my_hog
    vector< float > hog_detector;
    get_svm_detector( svm, hog_detector );
    my_hog.setSVMDetector( hog_detector );