gpt4 book ai didi

c++ - OpenMP 与 boost::directory_iterator 并行

转载 作者:行者123 更新时间:2023-11-28 01:38:11 24 4
gpt4 key购买 nike

我上面有代码+错误提示,无法解决问题。有什么想法吗?

#pragma omp parallel num_threads(3)
#pragma omp for
for (boost::filesystem::directory_iterator itr(p_c); itr != end_itr; ++itr)
{
std::string outputfile = (out_p/itr->path().filename()).string();
cv::Mat image = cv::imread(itr->path().string());
ImageContainer imgc = ImageContainer(itr->path().string(), outputfile, image);
if(!imgc.Image().data)
{
std::cout << imgc.Input_Path() << " is not found." << std::endl;
continue;
}
std::cout << "Processing " << imgc.Input_Path() << std::endl;
streaks_detection(imgc);
}

for头部directory_iteratorinitialization错误信息。

.../main.cpp:248: error: parenthesized initialization is not allowed in OpenMP 'for' loop
for (boost::filesystem::directory_iterator itr(p_c); itr != end_itr; ++itr)


^

最佳答案

您不能在工作共享循环中直接使用 directory_iterator,因为它不是随机访问迭代器。最简单的方法是将 std::copy 复制到 st::vector,然后对该 vector 执行并行循环。或者,您可以使用锁定和手动工作共享,但这更难做到正确。

关于c++ - OpenMP 与 boost::directory_iterator 并行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48366189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com