OpenCV中parallel_for 和 parallel_for_学习笔记

本文介绍了OpenCV中并行计算的函数`parallel_for`和`parallel_for_`,澄清了它们的区别。`parallel_for`实则是serial loop,而`parallel_for_`才是真正的并行循环。通过一个简单的测试示例,对比了for循环、`parallel_for`和`parallel_for_`在计算Mat元素立方操作上的性能差异,表明在简单操作上,它们性能相近,但在复杂算法中,使用`parallel_for`或`parallel_for_`能提升效率。
摘要由CSDN通过智能技术生成

OpenCV 从2.4.3开始加入了并行计算的函数parallel_for和parallel_for_(更准确地讲,parallel_for以前就存在于tbb模块中,但是OpenCV官网将其列在2.4.3.的New Features中,应该是重新改写过的)。

2.4.3中自带的calcOpticalFlowPyrLK函数也用parallel_for重写过了,之前我一直认为parallel_for就是用来并行计算的,之前也自己写了一些用parallel_for实现的算法。直到今天在opencv官网中看到别人的提问,才发现parallel_for实际上是serial loop,而parallel_for_才是parallel loop(OpenCV官网answer)。

为了比较for循环,parallel_for和parallel_for_ 三者的差异,下面做了一个简单的测试,对一个Mat中所有的元素(按列为单位)做立方操作。


Code

test.hpp

/**@ Test parallel_for and parallel_for_
/**@ Author: chouclee
/**@ 03/17/2013*/
#include <opencv2/core/internal.hpp>
namespace cv
{
namespace test
{
	class parallelTestBody : public ParallelLoopBody//参考官方给出的answer,构造一个并行的循环体类
	{
	public:
		parallelTestBody(Mat& _src)//class constructor
		{
			src = &_src;
		}
		void operator()(const R
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值