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:1024

A(i) = sin(i*2*pi/1024);

end

plot(A);

matlabpool close;

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

opencv 和 parfor,布布扣,bubuko.com

时间: 2024-11-06 01:28:29

opencv 和 parfor的相关文章

MAC平台下Xcode配置使用OpenCV的具体方法 (2016最新)

1.序言: 1.1 背景 本人小白一枚,不过因为最近在从事机器视觉方面的工作,所以接触到OpenCV. 因为工作需求,本人要在MAC端使用OpenCV实现一些视觉功能,配置环境成了最大的阻碍,网上查了很多相关资料和博客,都因为版本环境问题屡试屡败,不过经历重重尝试,笔者最终还是配置成功并运行了自己的源码.当然成功的关键还是因为笔者站在了巨人的肩膀上,借鉴了很多网上的教程,为了不误导大家配置的过程,参考文章的地址统一放在文章里,望各位大大看见之后能够理解,废话不说进入正题. 1.2 环境说明 如果

Ubuntu16.04安装tensorflow+安装opencv+安装openslide+安装搜狗输入法

Ubuntu16.04在cuda以及cudnn安装好之后,安装tensorflow,tensorflow以及opencv可以到网上下载对应的安装包并且直接在安装包所在的路径下直接通过pip与conda进行安装,如下图所示: 前提是要下载好安装包.安装好tensorflow之后还需要进行在~/.bashrc文件中添加系统路径,如下图所示 Openslide是医学图像一个重要的库,这里给出三条命令进行安装 sudo apt-get install openslide-tools sudo apt-g

关于opencv的文件配置详细内容

原文链接:http://blog.csdn.net/zhuce0001/article/details/21279527 最近在做opencv的一些代码的修修补补的工作: 但在此之前,根本没接触过cpp,更别谈vs,opencv 最近一段时间改代码,感觉自己学习很多东西,在这个过程中一直不断查资料,也没有时间去好好整理一下,但是查资料的过程中发现很多很好的博客,就记录下来方便自己日后查询,很感谢这些热爱分享的大佬 一.只对当前工程起作用的设置1. 设置头文件包含路径   工程上右击,选择"属性&

什么是图像 -- opencv基础

opencv基础篇--到底什么是图像 什么是图像?英语中有两个单词来形容图像,一个是picture,一个是image.这两者虽然是形容同一个东西,但却又有着区别.picture代表实而有物的真实图像:而image代表着计算机中存储的图像,也代表想象中的图像. 而我们更多研究的便是image,计算机图像从广义地可分为矢量图和像素图(位图).矢量图,是由一系列计算机指令描述和记录的一幅图,一幅图可以解为一系列由点.线.面等组成的子图.像素图,则是由很多个点组成的,每个点都是由二进制数据来描述和存储其

OpenCV点滴3

这段时间想稍微系统地学下: 1.Mat-基本图像容器: OpenCV函数中输出图像的内存分配是自动完成的(如果不特别指定的话). 使用OpenCV的C++接口时不需要考虑内存释放问题. 赋值运算符(=)和拷贝构造函数( Mat A,Mat B(A) )只拷贝信息头. 使用函数 clone() 或者 copyTo() 来拷贝一副图像的矩阵. Mat M(2,2, CV_8UC3, Scalar(0,0,255)); 行数,列数,8位,3通道,指定的值初始化: Point2f P(5,1) -->[

OpenCV教程

<OpenCV3编程入门>内容简介&勘误&配套源代码下载 [OpenCV入门教程之十八]OpenCV仿射变换 & SURF特征点描述合辑 [OpenCV入门教程之十七]OpenCV重映射 & SURF特征点检测合辑 [OpenCV入门教程之十六]OpenCV角点检测之Harris角点检测 [OpenCV入门教程之十五]水漫金山:OpenCV漫水填充算法(Floodfill) [OpenCV入门教程之十四]OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑 [Ope

Kinect2入门+opencv画骨架+骨架数据

////////////////////////////准备工作/////////////////////////////// 首先需要下载安装Kinect2的SDK,下载地址如下: https://www.microsoft.com/en-us/download/details.aspx?id=44561 建议安装时从官网下载,之前有出现过拷贝的文件无法正常安装的情况. //注意V2.0以下版本为一代Kinect所用,一代Kinect推荐V1.8 相对于一代的Kinect,二代由于SDK只出过

基于OpenCV立体视觉标定和校正

这几天学习双目视觉标定,分别使用了两种工具:OpenCV和Matlab.Matlab的效果非常稳定,但是一开始OpenCV的效果很糟糕,要不是出现中断就是标定出来的结果数值很大.经过了几天的不断调试和更改,终于把OpenCV的立体视觉标定和校正的程序写出来了.立体标定时计算空间上的两台摄像机几何关系的过程,立体校正则是对个体图像进行纠正,保证这些图像可以从平面对准的两幅图像获得.程序的框架如下: 1.读取左右相机图片序列 双目相机的图片序列放在Demon的路径下,左右相机的图像的名字分别存放在两

利用颜色和形态学两种方法进行车牌区域提取的OpenCV代码

要想提取车牌号,首先你要定位车牌区域嘛,本文分别两种方法用,即颜色和形态学的方法,对车牌区域进行判定.说得是两种方法,其实两种方法并无多大的区别,只是有一步的判断标准不一样而已,你看了下面整理出的的思路就知道两者的区别真的很小了. 方法一:利用颜色提取车牌区域的思路: ①求得原图像的sobel边缘sobelMat ②在HSV空间内利用车牌颜色阈值对图像进行二值化处理,得到图像bw_blue→ ③由下面的判别标准得到图像bw_blue_edge for (int k = 1; k != heigh