如何在图像处理中有效地使用线程?

时间:2013-05-02 08:23:03

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

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

实现部分:VC ++ 2010 +使用opencv库查找Circles

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

所以对于前:

如果我在图像中有20个圆圈,那么我将获得20个投资回报率

问题:所以每次算法都是按顺序进行的

输入 - > ROI功能 - >在给定的投资回报率中找到Cirlce - >返回圆参数 - >输出

待办事项:需要使用多线程减少处理时间

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

1 个答案:

答案 0 :(得分: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可能已经通过线程查找,导致通过线程化没有加速。