HOG opencv ocl模块上的分段错误

时间:2014-07-08 15:40:15

标签: c++ opencv opencl

我在模块ocl中使用OpenCv实现HOG算法时遇到问题。 问题不在于探测器的输出,而在于主方法的返回。也就是说,我可以编译并运行应用程序并获得结果,但是当应用程序存在时,它会因分段错误而崩溃。 我使用的是用mingw编译的opencv 2.4.8版,但是这个问题在其他opencv版本上仍然存在。

以下是给我报告问题的代码的极简主义示例:

int main()
{
    cv::ocl::DevicesInfo devices;
    cv::ocl::getOpenCLDevices(devices);
    cv::ocl::setDevice(devices[0]);

    cv::ocl::HOGDescriptor desc;
    desc.setSVMDetector(cv::ocl::HOGDescriptor::getDefaultPeopleDetector());

    cv::Mat t_img = cv::imread("view.png");

    std::vector<cv::Rect> hoghypothesis;

    cv::ocl::oclMat cleanImgGpu;
    cv::cvtColor(t_img, t_img, CV_BGR2BGRA);
    cleanImgGpu.upload(t_img);
    desc.detectMultiScale(cleanImgGpu, hoghypothesis, 0.09, cv::Size(8,8), cv::Size(0,0), 1.2, 0.0);

    for(unsigned int pl = 0; pl < hoghypothesis.size(); pl++)
        cv::rectangle(t_img, hoghypothesis.at(pl), cv::Scalar(255,255,255),2);


    cv::resize(t_img, t_img, cv::Size(1366,768));

    cv::namedWindow("origFrame",1);
    cv::imshow("origFrame", t_img);
    cv::waitKey(0);
    cv::destroyAllWindows();

    return 0;
}

谢谢,Américo。

其他信息: 当我正常运行程序时,它给了我一个appcrash这个信息:

Problem signature:
  Problem Event Name:   APPCRASH
  Application Name: OpenCLTests.exe
  Application Version:  0.0.0.0
  Application Timestamp:    00000000
  Fault Module Name:    ntdll.dll
  Fault Module Version: 6.1.7601.18229
  Fault Module Timestamp:   51fb164a
  Exception Code:   c0000005
  Exception Offset: 0000000000019a8a
  OS Version:   6.1.7601.2.1.0.256.48
  Locale ID:    2070
  Additional Information 1: 9646
  Additional Information 2: 9646f69d7d90104bc2f332551ea877c7
  Additional Information 3: 0f02
  Additional Information 4: 0f02418e0eb39adff911c83cce610af7

在调试模式下,它只给我一个SIGSEGV信号。它甚至不是例外,所以我无法尝试/捕获它。

0 个答案:

没有答案