【问题标题】:OpenCV GPU FaceDetector Example crashing on random framesOpenCV GPU FaceDetector 示例在随机帧上崩溃
【发布时间】:2012-02-24 09:26:38
【问题描述】:

我正在使用 OpenCV 2.3.1 中的 GPU 模块尝试基于 Haarcascade 的 FaceDetection。

我的代码正在编译,有时它会显示初始帧,并在输出帧上绘制一个或多个 ROI 矩形以突出显示检测到的对象。

但在第二次或第三次重复调用此检测器方法后,它就会崩溃。编译器说 SIGABRT。对此有何建议?

代码如下:

cv::Mat ProcessorWidget::detectGPU(Mat &img) {

    cv::gpu::CascadeClassifier_GPU cascade_gpu(QFileDialog::getOpenFileName(this).toStdString());

    img.copyTo(image_cpu);
    gpu::GpuMat image_gpu(image_cpu);

    gpu::GpuMat objbuf;
    int detections_number = cascade_gpu.detectMultiScale( image_gpu,
              objbuf, 1.2);

    Mat obj_host;
    // download only detected number of rectangles
    objbuf.colRange(0, detections_number).download(obj_host);

    Rect* faces = obj_host.ptr<Rect>();
    for(int i = 0; i < detections_number; ++i)
       cv::rectangle(image_cpu, faces[i], Scalar(255));
    return image_cpu;
}

另外一点是,OpenCV 附带的一些 Haarcascade 分类器在我使用它们时总是会使我的应用程序崩溃。但是其他一些分类器总是在第一帧上工作,然后在几帧后崩溃。

顺便说一句,我从这个方法中初始化分类器只是为了测试目的。在构造 ProcessorObject 时只初始化一次也无济于事......

分类器-XML 会不会不兼容?

提前致谢!

【问题讨论】:

    标签: opencv gpu


    【解决方案1】:

    直接来自文档:

    仅支持旧的 haar 分类器(由 haar 训练应用程序训练)和 NVIDIA 的 nvbin。

    【讨论】:

    • 我的程序仍然崩溃。我正在使用从 2010 年开始随 OpenCV 提供的 cascadeclassifier
    猜你喜欢
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    • 2011-11-28
    • 2020-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-17
    相关资源
    最近更新 更多