首页 > 代码库 > opencv 和 parfor

opencv 和 parfor

一次遇到两个不熟悉的,因此在一起记一下。

OpenCV的全称是:Open Source Computer Vision Library。

OpenCv是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux,Windows和Mac OS操作系统上。它轻量级而且高效——由一系列C函数和少量C++类构成,同时提供了Python\Ruby\

MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

OpenCV是一个用于图像处理、分析、机器视觉方面的开源函数库.

该库的所有代码都经过优化,计算效率很高,因为,它更专注于设计成为一种用于实时系统的开源库。opencv采用C语言进行优化,而且,在多核机器上面,其运行速度会更快。它的一个目标提供友好的机器视觉接口函数,从而使得复杂的机器视觉产品可以加速面世。该库包含了横跨工业产品检测、医学图像处理、安防、用户界面、摄像头标定、三维成像、机器视觉等领域的超过500个接口函数。
同时,由于计算机视觉与机器学习密不可分,该库也包含了比较常用的一些机器学习算法。或许,很多人知道,图像识别、机器视觉在安防领域有所应用。但,很少有人知道,在航拍图片、街道图片(例如google street view)中,要严重依赖于机器视觉的摄像头标定、图像融合等技术。
近年来,在入侵检测、特定目标跟踪、目标检测、人脸检测、人脸识别、人脸跟踪等领域,opencv可谓大显身手,而这些,仅仅是其应用的冰山一角。
如今,来自世界各地的各大公司、科研机构的研究人员,共同维护支持着opencv的开源库开发。这些公司和机构包括:微软,IBM,索尼、西门子、google、intel、斯坦福、MIT、CMU、剑桥。。。。

以上转自http://blog.csdn.net/carson2005/article/details/5822149

 

matlab并行之parafor

经常用matlab处理大型数据,有时某些数据处理起来可能要几天甚至更久。如果算法已经到最优,那么提高速度的最后方法就是从硬件下手了。在这个什么都开始并行的年代,matlab也提供了并行计算的功能,甚至能用GPU加速。matlab貌似在2010a开始支持并行计算,引入了一个工具箱,叫做parallel computing toolbox.它的使用方法,可以从matlab的帮助获得。

parfor 就是paralle+for,也就是并行的for循环,即,matlab会弄出几个虚拟的小pc,一个算i=1:30部分循环,一个算i=50:80部分循环,再来一个算i=90:120部分循环,等。也就是matlab将一个大循环分成小块,然后这些小块并行计算,最后再合在一起。但是parfor的前提是:循环的每次迭代独立,不相互依赖。如果下一次循环要依赖上一次循环的话,就不能使用parfor了。

关于提高的速度,用2核的话提高两倍,用4核的话提高了6被。

如何声明要开启的核(通常来讲就是你的PC有几个核就声明几个)?

首先在matlab命令行里输入: matlabpool open local 4

然后它会提示你一些消息,开启成功后就像以前一样操作就行。不想用了就再输入matlabpool close,关闭并行。

这些内容也可以写到函数里面去,比如

function yourFun()

....

  matlabpool(‘open‘,‘local‘,4); %最后一个参数是你要开启的线程数

    parfor i=1:N

    ...

    end

  matlabpool close

....

end

如果你的parfor怎么都通不了,或者速度变得更慢了,建议看matlab 帮助中的这一部分,看明白了,自然就有答案了:

一个使用parfor-loop的例子:

%example of parfor-loop

%本地worker数通常等于cpu的核数

matlabpool open local 2;parfor i=1:1024A(i) = sin(i*2*pi/1024);endplot(A);matlabpool close;

以上转自 http://blog.csdn.net/yuzg86/article/details/7542056