训练SVM时发生OpenCV错误(错误参数)

托梅克

我用训练图像(150张图像大小为144x33的图像)创建了Mat,所以Mat的宽度为4752,高度为150。另一个带有标签的垫子是1宽度和150高度。现在,当我尝试使用这两个Mat的svm.train()时,出现以下错误:

OpenCV Error: Bad argument (response #2 is not integral) in cvPreprocessCategoricalResponses, file ..\..\..\..\opencv\modules\ml\src\inner_functions.cpp, line 715
Exception in thread "main" CvException [org.opencv.core.CvException: cv::Exception: ..\..\..\..\opencv\modules\ml\src\inner_functions.cpp:715: error: (-5) response #2 is not integral in function cvPreprocessCategoricalResponses]

这是我的代码,有人可以告诉我什么地方可能出问题了吗?

Mat trainingImages = new Mat(0, imageWidth * imageHeight, CvType.CV_32FC1);
    Mat labels = new Mat(amountOfPlates + amountOfNoPlates, 1, CvType.CV_32FC1);
    List<Integer> trainingLabels = new ArrayList<>();

    for (int i = 0; i < amountOfPlates; i++) {
        int index = i + 1;
        String file = pathPlates + index + ".jpg";

        Mat img = Highgui.imread(file, 0);
        img.convertTo(img, CvType.CV_32FC1);
        img = img.reshape(1, 1);
        trainingImages.push_back(img);
        trainingLabels.add(1);
    }

    for (int i = 0; i < amountOfNoPlates; i++) {
        int index = i + 1;
        String file = pathNoPlates + index + ".jpg";
        Mat img = Highgui.imread(file, 0);
        img.convertTo(img, CvType.CV_32FC1);
        img = img.reshape(1, 1);
        trainingImages.push_back(img);
        trainingLabels.add(0);
    }

    Integer[] array = trainingLabels.toArray(new Integer[trainingLabels.size()]);

    int[] trainLabels = new int[array.length];
    for (int i = 0; i < array.length; i++) {
        trainLabels[i] = array[i];
    }

    for (int i = 0; i < trainingLabels.size(); i++) {
        labels.put(i, 1, trainLabels[i]);
    }

    CvSVMParams params = new CvSVMParams();
    params.set_svm_type(CvSVM.C_SVC);
    params.set_kernel_type(CvSVM.LINEAR);
    params.set_degree(0);
    params.set_gamma(1);
    params.set_coef0(0);
    params.set_C(1);
    params.set_nu(0);
    params.set_p(0);
    TermCriteria tc = new TermCriteria(opencv_core.CV_TERMCRIT_ITER, 1000, 0.01);
    params.set_term_crit(tc);

    Size data = trainingImages.size();
    Size label = labels.size();


    CvSVM svmClassifier = new CvSVM();
    svmClassifier.train(trainingImages, labels, new Mat(), new Mat(), params);
    svmClassifier.save("test.xml");

尺寸数据显示:宽度= 4752,高度= 150

尺寸标签显示:宽度= 1,高度= 150

我究竟做错了什么?

内核

Mat labels定义为CV_32FC1,但是您使用扩展了整数int[] trainLabels
您应该改用浮点数trainLabelsCV_32SC1类型labels

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

OpenCV使用图片示例训练SVM错误

来自分类Dev

SVM训练数据错误

来自分类Dev

定义参数时发生错误

来自分类Dev

定义参数时发生错误

来自分类Dev

使用R caret GBM进行训练时发生错误。“ {中的错误::任务1失败-“参数暗示行数不同”

来自分类Dev

训练StyleGan时发生CUDNN_STATUS_NOT_INITIALIZED错误

来自分类Dev

解析参数时发生Rails错误

来自分类Dev

训练svm模型时如何调整参数

来自分类Dev

建立openCV时发生错误-dumpOpenCLDevice()方法错误

来自分类Dev

Java错误(?):参数getName()在传递参数时发生更改

来自分类Dev

使用addWeighted()时,OpenCV引发错误的参数错误

来自分类Dev

安装ruby-opencv(0.0.14)时发生错误

来自分类Dev

将RGB转换为灰色OpenCV时发生致命错误

来自分类Dev

安装ruby-opencv(0.0.14)时发生错误

来自分类Dev

使用CUDA配置openCV时发生Cmake错误

来自分类Dev

startActivity时发生错误

来自分类Dev

安装时发生错误

来自分类Dev

函数调用大参数时发生内存错误

来自分类Dev

使用扩展参数调用Delphi函数时发生C ++错误

来自分类Dev

解析请求参数JSON :: ParserError-795时发生错误:

来自分类Dev

VBA-编写参数时发生错误处理

来自分类Dev

使用扩展参数调用Delphi函数时发生C ++错误

来自分类Dev

Oracle PL / SQL:传递参数时发生函数错误

来自分类Dev

Mybatis“desc 表名”不起作用。获取错误为“设置参数时发生错误”

来自分类Dev

错误。处理您的请求时发生错误

来自分类Dev

输入错误编号时发生错误

来自分类Dev

错误。处理您的请求时发生错误

来自分类Dev

插入值时发生错误

来自分类Dev

安装erlang时发生错误

Related 相关文章

热门标签

归档