双核机器使用openmp简单测试opencv

告别虚拟机:用RK3399开发板搭建你的移动机器人SLAM实验平台(ROS Kinetic + OpenCV 3.4.0) 本文详细介绍了如何利用RK3399开发板搭建移动机器人SLAM实验平台,涵盖硬件选型、系统优化、ROS Kinetic环境配置以及ORB-SLAM2和VINS-MONO算法的部署与性能调优。通过精简安装和资源管理策略,实现在低成本硬件上高效运行SLAM系统,为机器人开发者提供实用的全栈解决方案。 阅读详情
 

因为机器是双核。想到怎么才能更好应用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版本rc1 ,vc2005 中文简体

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

2.编译问题

我编译的时候出现这个错误
7>./cvbgfg_gaussmix.cpp(343) : error C2039: “foreground_regions”: 不是“CvGaussBGModel”的成员
7>        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;
}

AM572x异构处理器:嵌入式高性能计算与工业应用实战解析 异构计算是嵌入式系统实现高性能与低功耗平衡的关键技术,其核心原理在于将不同类型的处理单元(如CPU、DSP、硬件加速器)集成在同一芯片上,各司其职。这种架构通过任务卸载与并行处理,显著提升了实时处理能力和能效比,在机器视觉、工业自动化和高端人机交互等领域具有重要价值。AM572x Sitara处理器正是这一技术的典型代表,它集成了双核Cortex-A15、C66x DSP、视觉加速引擎(EVE)和丰富的工业外设,通过硬件加速单元(如IVA-HD视频编解码器)和可编程实时单元(PRU-ICSS),为复杂嵌入式 阅读详情

相关推荐

多GPU训练性能瓶颈六大根源与实战调优指南

多GPU分布式训练并非简单叠加算力,其本质是计算、数据加载、通信、内存带宽四大子系统的协同工程。当训练速度远低于线性加速比时,问题往往不在GPU本身,而在于PCIe拓扑错配、NVLink未激活、DataLoader饥饿、AllReduce反压、显存碎片化及CUDA上下文开销等底层机制失衡。这些瓶颈直接影响PyTorch DDP、DeepSpeed等主流框架的吞吐效率,尤其在CV/NLP大模型训练与小模型微调场景中表现突出。本文基于27个真实任务验证,从nvidia-smi信号识别到nsys微观分析,提供可落

weixin_34372728的博客 344

openMP的一点使用经验

最近在看多核编程。简单来说,由于现在电脑CPU一般都有两个核,4核与8核的CPU也逐渐走入了寻常百姓家,传统的单线程编程方式难以发挥多核CPU的强大功能,于是多核编程应运而生。按照我的理解,多核编程可以认为是对多线程编程做了一定程度的抽象,提供一些简单的API,使得用户不必花费太多精力来了解多线程的底层知识,从而提高编程效率。这两天关注的多核编程的工具包括openMP和TBB。按照目前网上的讨论,...

weixin_30449453的博客 2183

使用OpenMP加快OpenCV图像处理性能 | speed up opencv image processing with openmp

本文首发于个人博客https://kezunlin.me/post/7a6ba82e/,欢迎阅读! speed up opencv image processing with openmp Series Part 1: compile opencv on ubuntu 16.04 Part 2: compile opencv with CUDA support on windows 10 Pa...

KeZunLin's blog 1341

OpenCV算法加速(1)OpenMP/PPL/TTB基础知识

一、提高OpenCV的运算速度,有以下几种方法: 1、利用x86转为x64提速,可以提高1倍的速度 2、多线程的openmp或Intel TBB提速,将cpu的利用率从20%多提高到100% 3、利用GPU提速,至少可以提高5~10倍的运算速度 二、openmp https://www.openmp.org/ https://www.openmp.org/specifica...............

$firecat利白的代码足迹$ 1万+

ESP32CAM双目空间定位系统:从测距幻觉到亚厘米级闭环

双目视觉定位是机器人与AGV在无GPS室内环境实现自主导航的基础技术,其核心在于对极几何约束下的实时三角化与时空同步。传统方案常忽略硬件级曝光同步、UDP帧序对齐及重投影误差抑制,导致定位漂移严重。本文聚焦ESP32CAM双目模组的工程落地,详解主从式微秒级硬件同步、动态掩膜增强的特征鲁棒性、在线更新的基础矩阵F校验、带时间戳与帧序的UDP二进制协议设计,以及EPnP+ICP融合的轻量位姿解算。关键技术覆盖对极几何、三角化、UDP传输三大热词,适用于边缘计算设备(树莓派/Jetson Nano)部署,支撑弱

weixin_29181861的博客 323

基于OpenMP与OpenCV的Mandelbrot图像并行生成与显示实战

想象你在复平面上随机选一个点 $ c $,然后不断执行这个操作:$$$$初始值是 $ z_0 = 0 $。如果这个序列一直不会“跑掉”(即模长始终有界),那这个点 $ c $ 就属于Mandelbrot 集合;否则就被归为“逃逸区”。听起来很简单对吧?但正是这样一个极简规则,造就了自然界最复杂的图案之一 —— 自相似、无限嵌套、边界永不重复。📌 关键洞察:我们不需要判断是否“收敛”,只需要看它会不会发散。

weixin_29885875的博客 1041

【opencv+OpenMP】OpenMP并行编程应用—加速OpenCV图像拼接算法

OpenMP是一种应用于多处理器程序设计的并行编程处理方案,它提供了对于并行编程的高层抽象,只需要在程序中添加简单的指令,就可以编写高效的并行程序,而不用关心具体的并行实现细节,降低了并行编程的难度和复杂度。也正因为OpenMP的简单易用性,它并不适合于需要复杂的线程间同步和互斥的场合。 OpenCV中使用Sift或者Surf特征进行图像拼接的算法,需要分别对两幅或多幅图像进行特

古月的博客 6003

OpenMP OpenCV 显示Mandelbrot图像

OpenMP OpenCV 显示Mandelbrot图像,采用通用加速技术显示Mandelbrot图像

Opencv(C++)学习 TBB与OPENMP的加速效果实验与ARM上的实践(一)

OPENMP,TBB,多线程加速效果的对比

lez1021的博客 1979

SC8F073单片机串口通信保姆级教程:从寄存器配置到完整收发Demo(附避坑指南)

本文详细解析了SC8F073单片机串口通信的寄存器配置与调试技巧,涵盖TXSTA、RCSTA和SPBRG寄存器的逐位设置,提供精确的波特率计算方法和工业级抗干扰策略。通过完整的收发Demo和避坑指南,帮助开发者快速掌握底层串口通信技术,适用于工业控制等严苛环境。

weixin_33724046的博客 484

当我们谈论Unidbg时我们在谈什么

文章目录一、前言二、使用Unidbg的工作量是什么三、补环境补的是什么3.1 运行环境缺失3.2 上下文缺失四、Unidbg 不是所有情况下最优的解决方案五、Unidbg在大多数情况下是好的方案六、Unidbg和风控无关七、尾声 一、前言 这是一篇漫谈Unidbg的文章,我对Unidbg的使用和理解都还很浅,日后会更新或修改看法,欢迎大佬指点,也期待同侪讨论。 二、使用Unidbg的工作量是什么 我们常规使用Frida + IDA的动静态分析中,工作可能是这样的 找线索→Frida Hook验证→验证成功继

lilac的博客 5788

利用OpenMP优化Opencv图像处理

接下来,我们使用两个嵌套的循环遍历图像的每个像素点,并在内层循环中进行图像处理。在这个示例中,为了简化代码,我们并没有实际处理图像像素的过程,而是留出了一个注释位置,您可以在该位置添加您自己的图像处理代码。请注意,实际的图像处理过程可能会比这个示例复杂,这只是一个基本的演示代码,供您参考如何在图像处理中使用OpenMP进行并行处理。当使用OpenMP进行图像处理时,可以通过线程ID来控制每个线程处理的行数位置,实现并行处理图像的不同部分。在上面的示例中,我们首先读取了图像,并获取了图像的行数和列数。

邮箱:feboreigns001@163.com 1472

保姆级教程:在Ubuntu 20.04上从源码编译Apollo自动驾驶平台(含GPU环境配置)

本文提供了一份详细的Ubuntu 20.04上从源码编译Apollo自动驾驶平台的保姆级教程,包括GPU环境配置、Docker部署和编译构建等关键步骤。通过实战经验和避坑指南,帮助开发者高效完成Apollo平台的编译和验证,适用于自动驾驶技术研究和应用开发。

weixin_30876945的博客 406

双核机器使用openmp

http://www.opencv.org.cn/index.php?title=%E5%8F%8C%E6%A0%B8%E6%9C%BA%E5%99%A8%E4%BD%BF%E7%94%A8openmp&diff=nextWikipedia,自由的百科全书(修订版本间差异) 16:47 2007年4月16日的修订版本Shiqi Yu (Ta

1142

从CTF到实战:Frida Hook无导出SO函数的3种特殊姿势

本文深入探讨了在移动安全逆向工程中,如何利用Frida Hook无导出SO函数的三种高级技巧:字符串引用定位法、调用栈回溯法和内存特征码扫描。针对安卓So层加固和混淆场景,文章结合CTF赛题与实战案例,详细解析了每种方法的原理、实现步骤与适用场景,为安全研究人员提供了从理论到实践的完整解决方案。

jenkins8butler的博客 516

剪映专业版关键帧完全教程:从原理到实战的动画必修课

关键帧是视频动画的核心原理。视频由连续静止画面(帧)构成,关键帧记录素材属性变化的起始与结束状态,中间过渡帧由软件自动计算生成。剪映专业版中,视频、音频、文本、贴纸等素材均支持关键帧动画,可调节位置、缩放、旋转、不透明度、音量等参数。操作为:在起始位置点击参数旁菱形按钮添加关键帧,移动播放头后调整参数,系统自动生成第二个关键帧。多属性可独立控制并叠加,实现放大同时淡出等复合效果。通过设定变化起点与终点,关键帧能让静止元素产生移动、缩放、淡入淡出等丰富动态,是视频剪辑从基础拼接进阶创意表达的核心技能。掌握关键

深耕计算机专业知识与技术。 2088

OPENCV 1.0 RC1 版本介绍

注:下面内容是从发布版本的 changelog 文件中翻译过来的,仅供参考。 ======================OPENCV 1.0 RC1 , 发布时间:2006年8月====================== >>> 新函数与新特征 <<< - 支持的新编译器/环境: * GCC 4.x * Visual Studio .NET 200...

touchmm 137

Orin 10G PHY网络分析

由于调试用的10G PHY,所以整理下分析过程; 1.从Orin devkit 丝印来看RJ45 对应J17 通过搜索 MGBE_PHY_A_N 找到连接的10G PHY, 原理图上标明了MDIO address 为0x0, 使用的PHY 芯片为 Marvel 的AQR113C, 主要特性: 架构: 关键特征: MDC 连接了GPIO26_XFI0_MDC; MDIO 连接了GPIO25_XFI0_MDIO; 通过pinmux_config映射表也可以..

乐于分享 5650

OpenCV 配置选项参考(二)

对于早于 3.9 的 cmake 版本,OpenCV 使用自己的脚本,对于较新的版本 - 与 CMake 打包的脚本。在运行时,需要一个有效的 OpenCL 运行时,以检查它的运行和/或命令。OpenCL 集成的某些参数可以使用环境变量进行修改,例如 .但是,目前还没有关于此功能的完整文档,因此请查看文件中的源代码以获取详细信息。相应的选项将强制构建和使用自己的库,它们在某些平台上默认启用,例如 Windows。后端可以构建为插件,从而打破了对第三方库的严格依赖,并在运行时使它们成为可选的。

2301_81888214的博客 1715

团体程序设计天梯赛竞赛题--登顶题【L3-039 攀岩】

登顶级 3 道题,每道题 30 分,满分为 90 分。

Pretty Boy Fox的博客 653

YOLO11涨点优化:Loss魔改 | WIoU (Wise-IoU) v3版本全面替换,基于动态非单调聚焦机制,让模型更聪明地学习

YOLOv11目标检测中的WIoU v3损失函数改进 本文探讨了YOLOv11目标检测模型中CIoU损失函数的局限性,并提出了WIoU v3改进方案。关键发现包括: CIoU的缺陷:在低质量样本(小目标/遮挡目标)上过度惩罚,导致模型优化方向偏离,小目标AP往往比大目标低30%左右。 WIoU v3的创新: 动态非单调聚焦机制:根据样本"离群度"智能分配梯度 让模型重点优化中等质量样本,减少对低质量样本的无效关注 采用指数移动平均来自适应调整质量评判标准 实际效果:WIoU v3在保持大

2601_95807009的博客 422

OpenCV常见的优化方法和技巧总结

OpenCV常见的优化方法和技巧总结 【尊重原创,转载请注明出处】http://blog.youkuaiyun.com/guyuealian/article/details/78540206 目录 OpenCV常见的优化方法和技巧总结 一、OpenCV常见的优化方法总结 1.1 cv::imread()设置reduce模式: 1.2 查表法:LUT, 1.3 像素遍历 1.4 ope...

AI吃大瓜的博客 2万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Opencv(C++)学习 TBB与OPENMP的加速效果实验与ARM上的实践(二)

在RV1106上测试openmp的加速效果

lez1021的博客 2624

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

上一篇: 基于红绿方格彩色棒的跟踪实现
下一篇: 支持xp风格的manifest
hardVB
博客等级 码龄26年 257粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值