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

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

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

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

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

例如:

如果我在图像中有 20 个圆圈,我将有 20 个投资返回率

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

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

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

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

最佳答案

是的,如果您确保妥善处理返回,您可以。一种方法是尽可能使用 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:我不知 Prop 体实现,但是OpenCV可能已经对圆的发现进行了线程化处理,导致线程化后没有加速。

关于c++ - 如何在图像处理中有效地使用线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16333415/

相关文章:

multithreading - LOCK XCHG和MOV+MFENCE在逻辑和性能上有什么区别?

WinAPI C++ 客户端在读取之前检测匿名管道上的写入

c++ - 让 Howard Hinnant 的 short_alloc(C++11 版本)在 Visual C++ 2015 中编译

c++ - 如何在 C++ 中隐藏我的 AWS S3 访问 key 和 secret ?

c++ - 从 Maya 场景中的现有对象名称构造 MObject

c++ - 将变量作为模板参数传递

Monitor 类的 C# 多线程问题 - 可能的生命锁?

java - 在 ExecutorService 的提交和 ExecutorService 的执行之间进行选择

c++ - 拥有 std::map 的最佳方法,如果没有 key ,我可以在其中定义返回的内容?

c++ - Visual Studio 2012 不存在 mfplatf.lib