大型阵列上的OpenMp和opencv崩溃

时间:2018-02-22 11:09:34

标签: c++ opencv openmp

我正在尝试使用openMp并行化函数,并且当增加矩阵的大小时我会遇到随机崩溃。在单线程上,即使单个Mat大小高达6000x4000,一切也能正常工作,但在openMp上崩溃。有趣的是,当Mat的尺寸减小到3000x2000时,它的工作正常。

        std::vector<std::string> Image_path;
        for (int iI = 0; iI < 10; ++iI) {
            Image_path.emplace_back("test" + std::to_string(iI) + ".bmp");
        }
        std::vector<cv::Mat> Images(Image_path.size());
        #pragma omp parallel for
        for (int iI = 0; iI < Image_path.size(); ++iI) {
            Images[iI] = cv::imread(Image_path[iI], cv::IMREAD_GRAYSCALE);
        }

编辑:崩溃发生在cv :: imread,但只有在#pragma取消注释时才会发生。 在发现堆栈大小崩溃时仍然会发生。 当把cv :: imread放在批评部分崩溃时不会发生。 我将代码移植到openCv源代码以跟踪具有couse问题的确切行,并且它没有发生。当我将图像大小增加到12000x8000时,一切正常。

OpenCv 3.0,Windows 10,Visual Studio 2013 120mvc 64位。 崩溃 - 读取位置的访问违规

0 个答案:

没有答案