【OpenCV学习】OpenMP并行化实例

作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/

#include "cv.h"
#include "highgui.h"
#include <stdio.h>
#include <stdlib.h>
#include <omp.h>void EdgeOpenMP(IplImage *src,IplImage *dst,int thresh)
{int height    = src->height;int width     = src->width;int step      = src->widthStep;uchar *data1      = (uchar *)src->imageData;uchar *data2      = (uchar *)dst->imageData;int i=step;#pragma omp parallel forfor(i=step+1;i<height*width;i++){if(abs(data1[i]-data1[i-1])>thresh || abs(data1[i]-data1[i-step])>thresh)data2[i]=255;/* 对于单通道,前后两帧差分大于门限或者对于多通道前后两帧的一个指标差分大于门限,则视为边缘*/elsedata2[i]=0;}
}void Edge(IplImage *src,IplImage *dst,int thresh)
{int height    = src->height;int width     = src->width;int step      = src->widthStep;uchar *data1      = (uchar *)src->imageData;uchar *data2      = (uchar *)dst->imageData;int i=step;for(i=step+1;i<height*width;i++){if(abs(data1[i]-data1[i-1])>thresh || abs(data1[i]-data1[i-step])>thresh)data2[i]=255;elsedata2[i]=0;}
}int main()
{char filename[512];IplImage *src,*edge1,*edge2;puts("File name:");gets(filename);src = cvLoadImage(filename,CV_LOAD_IMAGE_GRAYSCALE );edge1=cvCloneImage(src);edge2=cvCloneImage(src);cvNamedWindow("src", CV_WINDOW_AUTOSIZE);cvMoveWindow("src", 100, 100);cvShowImage( "src", src);cvNamedWindow("Edge", CV_WINDOW_AUTOSIZE);cvMoveWindow("Edge", 200, 100);cvNamedWindow("EdgeOpenMP", CV_WINDOW_AUTOSIZE);cvMoveWindow("EdgeOpenMP", 300, 100);/* 以上都是准备一些窗口和图形基本数据 */int tekrar=100;//运行次数int thresh=30;double start, end,t1, t2;/* 计算没有使用OpenMP优化的时间 */start= (double)cvGetTickCount();//记下开始的时钟计数,以便计算函数或用户代码执行时间for(int i=0;i<tekrar;i++)Edge(src,edge1,thresh);end= (double)cvGetTickCount();//记下结束的时钟计数t1= (end-start)/((double)cvGetTickFrequency()*1000.);//计算运行时间,以毫秒为单位printf( "Run time without OpenMP = %g ms/n", t1 );/* 计算使用了OpenMP优化的时间 */start= (double)cvGetTickCount();for(int i=0;i<tekrar;i++)EdgeOpenMP(src,edge2,thresh);end= (double)cvGetTickCount();t2= (end-start)/((double)cvGetTickFrequency()*1000.);printf( "Run time with OpenMP = %g ms/n", t2 );printf( "Performance ratio (%%) = %% %.1f /n", 100*(t1/t2-1) );cvShowImage( "Edge", edge1);cvShowImage( "EdgeOpenMP", edge2);cvWaitKey();cvDestroyWindow("Edge");cvDestroyWindow("EdgeOpenMP");cvReleaseImage(&src);cvReleaseImage(&edge1);cvReleaseImage(&edge2);
}这是我的结果:
File name:
dog.jpg
Run time without OpenMP = 647.627 ms
Run time with OpenMP = 453.001 ms
Performance ratio (%) = % 43.0

 

作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/301922.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一探即将到来的 C# 10

前言本来因为懒不想写这篇文章&#xff0c;但是不少人表示有兴趣&#xff0c;于是最后决定还是写一下。.NET 6 最近几个预览版一直都在开发体验&#xff08;如 hot reload、linker 等&#xff09;、平台支持&#xff08;如 Android、iOS 等&#xff09;、工具链&#xff08;如 …

预售┃没有标题,配得上这款“俄罗斯方块”

▲数据汪特别推荐点击上图进入玩酷屋在之前的文章时&#xff0c;马斯提到数学存在一种现象叫“梯次掉队”&#xff0c;原因在于孩子的数学思维地基没有打牢。&#xff08;传送门&#xff09;提到初中孩子需要空间想象能力时&#xff0c;很多父母疑惑为何需要&#xff1f;关于这…

c mysql binlog_Mysql Binlog

一&#xff0e;Mysql Binlog格式介绍Mysql binlog日志有三种格式&#xff0c;分别为Statement,MiXED,以及ROW&#xff01;1.Statement&#xff1a;每一条会修改数据的sql都会记录在binlog中。优点&#xff1a;不需要记录每一行的变化&#xff0c;减少了binlog日志量&#xff0c…

读Getting Started With Windows PowerShell笔记

使用中Powershell的操作跟Linux中的终端操作很多地方是一致的&#xff0c;当然&#xff0c;还是有着Windows自己的特色&#xff0c;比如&#xff0c;不分大小写。之前命令行中的命令大部分在这里也可以用&#xff0c;而且用法一样。选中后点右键&#xff0c;即复制到剪切板。不…

NET问答: String 和 string 到底有什么区别?

咨询区 Peter O.&#xff1a;开门见山&#xff0c;参考如下例子&#xff1a;string s "Hello world!"; String s "Hello world!";请问这两者有什么区别&#xff0c;在实际使用上要注意一些什么&#xff1f;回答区 Derek Park&#xff1a;string 是 C# 中…

mysql 5.7.6 5.7.19_MySQL数据库之Mysql 5.7.19 免安装版遇到的坑(收藏)

本文主要向大家介绍MySQL数据库之Mysql 5.7.19 免安装版遇到的坑(收藏)了 &#xff0c;通过具体的内容向大家展现&#xff0c;希望对大家学习MySQL数据库有所帮助。1、从官网下载64位zip文件。2、把zip解压到一个位置&#xff0c;此位置为安装为安装位置3、如果有以前的mysql 如…

LVS负载均衡-NET、DR模式配置

模型一&#xff1a;NAT模型的配置 实验环境&#xff1a; 采用VMware虚拟机&#xff0c;版本6.0.5 操作系统&#xff1a;Red Hat Enterprise Linux 5 (2.6.18) 虚拟机1&#xff1a;充当Director&#xff1a;网卡1(桥接):192.168.0.33&#xff08;对外&#xff09;&#xff0c;网…

编程语言的“别样”编年史

全世界只有3.14 % 的人关注了数据与算法之美代码是一门语言&#xff0c;这门语言搭建了人与计算机沟通的桥梁。通过编写代码&#xff0c;人类可以“命令”计算机开发网页、开发软件、搭建游戏... ... 这门语言并不是上帝的发明&#xff0c;它是前辈们发挥聪明才智创造出来的&am…

mysql目录树_无限级目录树+记忆节点状态(PHP+mysql)

借鉴 网友 iuhxq 的设计制作而成的目录树&#xff0c;在此感谢 iuhxq 的代码对我大帮助。特点&#xff1a;1、无限级节点。2、直接产生html代码&#xff0c;容易修改。3、目录清楚&#xff0c;类似于资源管理器&#xff0c;(csdn论坛的&#xff0c;层数多了就不容易分清楚层次了…

NET问答: 如何使用 C# 比较两个 byte[] 的相等性 ?

咨询区 Hafthor&#xff1a;我现在业务中遇到了一个场景&#xff1a;如何简洁高效的判断两个 byte[] 的相等性&#xff1f;我现在是这么实现的&#xff0c;有一点繁琐&#xff1a;static bool ByteArrayCompare(byte[] a1, byte[] a2) {if (a1.Length ! a2.Length)return false…

也可以改为while(input[0])或while(cininput[0])

2019独角兽企业重金招聘Python工程师标准>>> <<c primer plus>> // static.cpp -- using a static local variable #include <iostream> // constants const int ArSize 10; // function prototype void strcount(const char * str); int main()…

.NET Core HttpClient请求异常分析

【导读】最近项目上每天间断性捕获到HttpClient请求异常&#xff0c;感觉有点奇怪&#xff0c;于是乎观察了两三天&#xff0c;通过日志以及对接方沟通确认等等&#xff0c;查看对应版本源码&#xff0c;尝试添加部分配置发布后&#xff0c;观察十几小时暂无异常情况出现&#…

python 小甲鱼 代码_Python小代码

先自我介绍一下&#xff0c;本人是正在自学Python的小白&#xff0c;没事分享一下自己写的小代码&#xff0c;欢迎在评论区补充。游戏管理系统&#xff1a;代码如下&#xff1a;def healthe(m):if m"Y"or y:print("欢迎&#xff0c;请进入游戏&#xff01;"…

原来这些行业的“潜规则”是这样的...

全世界只有3.14 % 的人关注了数据与算法之美在日常生活中&#xff0c;我们往往受限于专业和工作&#xff0c;对自己所处行业之外的事物了解不多。今天&#xff0c;数据汪带大家扒一扒各个行业中不为人知的“潜规则”&#xff0c;看看你们知道几个&#xff1f;看完上面20个“潜规…

“工业互联网平台“将成为工业制造企业的标配

目 录1. 概述2. 背景3. 评述1. 概述“‘工业互联网平台’将成为工业制造企业的标配”的命题既是基于工业生产企业现实情况的判断&#xff0c;又是对工业企业未来发展的需求判断。前途是光明的&#xff0c;但是道路是曲折的。前途的光明是基于工业企业现实…

5.[BX]和Loop指令

1.Debug和MASN中读取内存单元的区别&#xff1a;Debug中:mov ax,0ffffhmov ds,axmov al,[1]MASN中:mov ax,0ffffhmov ds,axmov bx,1mov al,[bx]或者mov ax,0ffffhmov ds,axmov al,ds:[1]2.Loop指令assume cs:codecode sementmov ax,2mov cx,3s: add ax,axloop scode ednsend 其…

linux mysql安装教程 方大帝_discuz论坛出现Can not connect to MySQL server错误的解决方法...

网站出现了问题&#xff0c;大家一定很着急吧&#xff0c;特别是做网站的&#xff0c;这几天有一台MySQL数据库服务器频繁出现掉线&#xff0c;经排查&#xff0c;并没有哪个网站受攻击&#xff0c;网上搜索了一下&#xff0c;很多人都碰到这问题&#xff0c;全是Windows系统上…

预售┃每个人都应该学习编程,因为它会教你如何思考

▲数据汪特别推荐点击上图进入玩酷屋扎克伯格11岁开始学习编程&#xff0c;创办Facebook&#xff1b;比尔盖茨13岁学习编程&#xff0c;创办微软……乔布斯说&#xff1a;“每一个人都应该学习电脑编程&#xff0c;因为它会教你如何思考。"现在在北京上海&#xff0c;顶级…

数据库(杂)

like查询是区分大小写的转载于:https://blog.51cto.com/cyxinda/1226040

python3抓取图片_通过Python3 爬虫抓取漫画图片

引言&#xff1a;最近闲来无事所以想着学习下python3&#xff0c;看了好长时间的文档&#xff0c;于是用python3写了一个漫画抓取的程序&#xff0c;好了 废话不多说上码&#xff01;第一步&#xff1a;准备环境 和类库&#xff0c;我用的是python3.5 禁用 python2.x &…