【问题标题】:How to Use threads efficiently in Image Processing?如何在图像处理中有效地使用线程?
【发布时间】:2013-05-02 08:23:03
【问题描述】:

目标:开发一种在给定图像中查找圆圈的算法

实现部分:VC++ 2010 + 使用opencv库找圈子

输入:ROI (X,y,Width,Height) , IplImage* (Input_Image) 算法:所以这里在给定的 ROI 中调用 Opencv Circle 函数

所以例如:

如果我在图像中有 20 个圆圈,我将有 20 个 ROI

问题:所以每次算法都是基于序列的

输入 -> ROI 函数 -> 在给定的 ROI 中查找圆 -> 返回圆参数 -> 输出

TO DO:需要使用多线程来减少处理时间

我可以使用两个线程并行执行此操作吗???

【问题讨论】:

  • 请只使用线程概念而不是 OpenMP

标签: c++ multithreading visual-c++ opencv image-processing


【解决方案1】:

是的,如果您确保正确处理退货,您可以。一种方法是尽可能使用 OpenMP。

std::vector<ResultType> result;
#pragma omp parallel for shared(image_data) //using openMP
for(int i = 0; i < 20; ++i) {
  result.push_back(CircleRoutine(image_data, ROI[i]));
}

这应该让你知道你可以做些什么来并行化任务。

注意:如果您的最终结果取决于找到圆圈的顺序,那么您必须按顺序进行。如果没关系,那将是使其并行的完美例程。

注意2:我不知道实现,但OpenCV可能已经线程化循环查找,导致线程化并没有加速。

【讨论】:

    猜你喜欢
    • 2017-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多