织梦CMS - 轻松建站从此开始!

罗索

双核机器使用openmp

罗索客 发布于 2009-03-20 14:23 点击:次 
因为机器是双核。想到怎么才能更好应用opencv , 从opencv说明上得到 一些可以使用 OPENMP 做并行处理的函数: cvHaarDetectObjects, cvCalcOpticalFlowPyrLK, cvDistTransform (the new algorithm only), 因此它们的运行速度在双核CPU上要快 ~50-80% , 当代码用 Intel c
TAG:

因为机器是双核。想到怎么才能更好应用opencv , 从opencv说明上得到

一些可以使用 OPENMP 做并行处理的函数: cvHaarDetectObjects, cvCalcOpticalFlowPyrLK, cvDistTransform (the new algorithm only),

因此它们的运行速度在双核CPU上要快 ~50-80% , 当代码用 Intel compiler 或者 MSVC2005 编译时。

于是实验一下.

环境 :

机器配置 : windows XP 32 , 2G RAM , dual core intel 1.8G *2

软件 : opencv版本1.0 rc1 ,vc2005 中文简体

1.VC2005下首先需要设置一下,但是opencv提供的release openmp配置好像是针对win64版本,需要修改一下,我就自己建立了一套配置, 如图,记得打开/openmp选项, 需要打开的项目是 CV CXCORE CVAUX (可以搜索一下_OPENMP ,发现只有几个函数优化了 )


新窗口浏览
新窗口浏览

2.编译问题

我编译的时候出现这个错误
>.\\cvbgfg_gaussmix.cpp(343) : error C2039: “foreground_regions”: 不是“CvGaussBGModel”的成员
> c:\\Program Files\\OpenCV\\cvaux\\include\\cvaux.h(1300) : 参见“CvGaussBGModel”的声明
最后修改cvaux.h里的
CV_BG_STAT_MODEL_FIELDS 里面的 oreground_regions?/ 变成 oreground_regions*/
我觉得我是英文版XP的问题导致文件乱码,需要修改一下的
3.编译完成用例子lkdemo测试一下,因为它用到了cvCalcOpticalFlowPyrLK ,

修改lkdemo.c的代码,需要将一些IO操作、空闲cpu的代码去掉 把 cvQueryFrame( capture );变成 frame = cvLoadImage("c:\\\\test1.bmp",1); 放到for()外边 去掉cvWaitKey(10);

在需要优化的地方加入
#pragma omp parallel
最后发现可以利用CPU 51%-53% ,说明只是很少使用到了第二个CPU,而不加时平时是最多50%

而使用最简单的测试openmp的例子可利用CPU 100%

4。结论

目前opencv提供的优化还太少,只有这么几个函数,实际上但感觉现在似乎不太需要openmp ,而瓶颈在硬盘IO,摄像头IO,内存IO等等


5。附带最简单的测试openmp的例子

#include "stdafx.h"
#include "omp.h"

int _tmain (int argc, _TCHAR * argv[])
{
#pragma omp parallel
for (;;)
{
int i = 0;
i++;
int y = i;
}
return 0;
}

(ixmy)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/200903/7238.html]
本文出处:网络博客 作者:ixmy
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容