千呼万唤始出来!OpenCV 4.0正式发布!
作者 | 周强(本文为作者独立观点,转载请联系作者)
来源 | 我爱计算机视觉
OpenCV 4.0 正式版来啦!
重回英特尔的 OpenCV 终于迎来一次大版本更新,增加了诸多新特性,快来一起看看吧~
因为 OpenCV 最开始开发时的语言是 C,导致许多模块无法利用 C++ 11 的良好特性,OpenCV 4.0 版本的一个重要使命就是去除 C 语言风格的接口,使其完全支持 C++ 11!
1.大量从 OpenCV 1.x 遗留的 C 语言风格的 API 接口被删掉,主要影响的模块是 objdetect, photo, video, videoio, imgcodecs, calib3d。
2.在 core 模块中的持久化(在 XML,YAML 或 JSON 中存储和加载结构化数据)已完全用 C ++ 重新实现,并去除了相应的 C 风格的接口。 目前,base64 支持尚未完成(仅支持加载 base64 编码的 XML 和 YAML,还未支持编码)。 现在,存储在 FileNode 中的序列的随机访问是 O(N) 操作; 使用 cv :: FileNodeIterator 能够更快地进行顺序访问。 速度上,FileStorage 的加载比以前的实现少了 3-6 倍的内存!
3.编译新版 OpenCV 现在需要支持 C++ 11 的编译器。
DNN(深度神经网络)模块是目前 OpenCV 更新最重要的模块!
1.增加 Mask-RCNN 模型支持。
使用指南:
https://github.com/opencv/opencv/wiki/TensorFlow-Object-Detection-API
Python例子:
https://github.com/opencv/opencv/blob/master/samples/dnn/mask_rcnn.py
作者曾经报道过的例子:
OpenCV4.0 Mask RCNN 实例分割示例 C++/Python实现
2.集成 ONNX 解析器。 支持多个流行的分类网络。 部分支持 YOLO 对象检测网络(YOLO 的 ONNX 版本缺少一些提供矩形列表的最终图层)。
3.通过引入 Intel DLDT 改进 DNN 模块速度。
Intel DLDT 近期已经开源,详见:
https://software.intel.com/openvino-toolkit
4.API 更改:默认情况下,blobFromImage 方法不会交换 R 和 B 通道,也不会对输入图像进行裁剪。 而且,此 API 更改也已添加到 OpenCV 3.4 分支。
5.为不支持 OpenCL 而支持 Vulkan 的硬件平台添加了实验性质的 Vulkan 后端(还在开发中!不建议大家使用)。
6.为 OpenCV 支持的最流行的深度学习网络添加了快捷方式。 可以通过指定模型的别名,跳过预处理参数甚至模型的路径!
比如:
python object_detection.py --model opencv_face_detector.caffemodel --config opencv_face_detector.prototxt --mean 104 177 123 --width 300 --height 300
可以直接被替代为:
python object_detection.py opencv_fd
7.修复了 AMD 和 NVIDIA GPU 上的 OpenCL 加速。 现在,可以为模型启用 DNN_TARGET_OPENCL,开启 OpenCL 支持。 请注意,DNN_TARGET_OPENCL_FP16 仅在英特尔 GPU 上进行测试,因此仍需要额外的 flags。(这个善意的提醒也就意味着你最好不要用那两家的显卡玩OpenCV(^ ^))
G-API 为算法的硬件优化加速提供计算图支持!
opencv_gapi 是全新添加的模块, 它是非常有效的图像处理引擎。开发者可以在程序中定义多个图像处理步骤组成的图,执行的时候进行优化,使得 fast and portable。
非常看好这一模块的应用!
“加速”是 OpenCV 开发永恒不变的主题!
每次发布这块的说明都差不多,总结起来就是一句话:
我们很努力地给你们在 CPU 的指令级上进行了加速,只要是支持该指令的 CPU 尽量让你们用上,而且我们还支持 NEON 了哦~
objdetect 模块新增 QR 码的检测和解码!
因为这个功能在移动端几乎成为 APP 的标配了。
参考例子:
https://github.com/opencv/opencv/blob/master/samples/cpp/qrcode.cpp
作者曾经对检测功能进行了测试:
OpenCV4.0 快速QR二维码检测测试示例
实现了流行的 Kinect Fusion 算法!
并针对 CPU 和 GPU(OpenCL)进行了优化,集成到 opencv_contrib / rgbd 模块中。 为了使实时采集处理更高效,在 opencv / videoio 模块中更新了 Kinect 2 支持。 在 4.0 beta 版本中,iGPU 的代码已经加速,在高分辨率的情况下(512x512x512 integration volume),性能提升了 3 倍。
非常高效且高质量的 DIS 密集光流算法已经从 opencv_contrib 转移到 opencv/video 模块。
示例:
https://github.com/opencv/opencv/blob/master/samples/cpp/dis_opticalflow.cpp
这还是比较赞的,之前 OpenCV 的光流模块相比学术界的最新成果实在是太弱了。
总结
新版 OpenCV 更加聚焦图像处理基础功能和深度学习模块!英特尔自家的加速库和 G-API 是值得表扬的亮点!
-【完】-
精彩推荐
◆
BDTC 2018
◆
2018 中国大数据技术大会将于 12 月 6 - 8 日在新云南皇冠假日酒店举行。汇聚超百位国内外实力讲师从学界翘楚到行业一线大拿:
管晓宏:中国科学院院士;
张宏江:源码资本投资合伙人;
张晓东:美国俄亥俄州立大学 Robert M. Critchfield 讲席教授;
陈性元:北京信息科学技术研究院副院长;
周靖人:阿里巴巴集团副总裁;
李浩源:Alluxio 公司创始人&CEO
......
全方位立体解读大数据时代的技术进程,为众技术爱好者奉上一场优质干货盛宴。
推荐阅读
胜过iPhone XS?Google Pixel的“夜视功能”是怎样炼成的
近期最受大家关注的机器学习项目Top10!
干货(附源代码) | 爬取一万条b站评论,分析9.7分的新番凭啥这么火?
程序员如何 Get 分布式锁的正确姿势?
让你崩溃无语的程序命名有哪些?
2年2亿美金,澳本聪耗得起BCH内战又怎样?
刚写完排序算法,就被开除了…
相关文章:

ORA-01031: insufficient privileges的解决方法
原文出自:http://www.chinaunix.net/jh/19/132866.html############################################# # # NAME: troubleshoot connect internal.txt # # DESCRIPTION: # connect internal # connect / as sysdba 要口令问题:# refer (METALINK,ORACLEDOC), # me…

java 线程通讯_java多线程(五)线程通讯
1.1. 为什么要线程通信多个线程并发执行时,在默认情况下CPU是随机切换线程的,有时我们希望CPU按我们的规律执行线程,此时就需要线程之间协调通信。1.2. 线程通讯方式线程间通信常用方式如下:l 休眠唤醒方式:Object的w…

合并排序(C语言实现)
递归算法是把一个问题分解成和自身相似的子问题,然后再调用自身把相应的子问题解决掉。这些算法用到了分治思想。其基本模式如下: 分解:把一个问题分解成与原问题相似的子问题 解决:递归的解各个子问题 合并:合并子问题…

工程实践也能拿KDD最佳论文?解读Embeddings at Airbnb
作者 | Mihajlo Grbovic,Airbnb 资深机器学习科学家译者 | Lang Yang,Airbnb 工程经理【导读】本文最早于 2018 年 5 月 13 日发表,主要介绍了机器学习的嵌入技术在 Airbnb 爱彼迎房源搜索排序和实时个性化推荐中的实践。Airbnb 爱彼迎的两位…
计算点、线、面等元素之间的交点、交线、封闭区域面积和闭合集(续1)
继续上一节的内容,本节主要讲解三维空间中射线、线段与平面及三维物体的交点及距离的计算,它们在碰撞检测和可见性剔除等应用中是必不可少的。首先给出3D空间下点乘和叉乘的定义与定理的推导,再谈如何应用到程序编码的工作中。 设三维空间中任…

android 抓取native层奔溃
使用android的breakpad工具 使用这个工具需要下载Breakpad的源码,然后进行编译,编译之后会生成两个工具 我们使用这两个工具来解析奔溃的位置。这里我们可以下载已经编译好的工具 下载地址是:链接:http://pan.baidu.com/s/1jIiU5c…

渗透各行各业,这家RPA外企宣布全面进军中国市场
11月15日,全球机器人流程自动化(RPA)领域平台UiPath首次在中国举办UiPath Together年度大会,来自自动化、人工智能和机器学习领域的行业专家,以及来自中国和世界的领先公司的客户与合作伙伴共同参与了此次活动。在此次…

java gettext_JAVA中getText()怎么从一个JTextArea中读出内容?
想先创建一个JTextArea,然后在里面输入内容(几个字母),然后用getText读出里面的内容,可是好像只能是先在JTextArea里面写,然后getText才能读出,而不能先运行,在图形界面的JTex...想先创建一个JTextArea&…

想在SqlDbHelper.cs类中加的垃圾方法
虽然没改写SqlDbHelper.cs类的能力,但好不容易想出来的,放着留个纪念~~~~~/**//// <summary> /// 执行SQL语句,返回第一行,第一列(sea) /// </summary> /// <param na…

java全站_javaWeb_全站编码
目的 : 实现javaweb项目的全站编码问题需要解决的问题 : 在何时进行编码问题的解决, 在何处进行编码问题的解决, 才用什么方法进行解决设计思路 : 在Filter进行全站的编码转换, 对于GET请求 : 使用装饰者模式(是你有你一切拜托你), 修改Request.getParameter()方法, 在getparam…

在Linux系统中修改目录的权限如何恢复
在我工作中的某一天执行了chmod -R 777 /home后我十分后悔,这下不知道该怎么办?心里面很是着急。此时灵机一动问了一下谷哥,终于找到了方法解决此问题,不过前提是要自己做了文件权限备份工作,现在我就给大家讲解一下我…

.Net Framework 3.5 结构图
从打印社用A0或A1的纸打出来,大概10RMB,看起来超爽。 转载于:https://www.cnblogs.com/habin/archive/2008/03/15/1107196.html

关于CVPR 2019投稿的一些感想
作者 | 胡国圣,英国 anyvision 高级研究员,从事深度学习,人脸识别的研究。一年一度的 CVPR 是人工智能的机器视觉方向最重要的学术会议,每年吸引都会全球最顶尖的大学和公司的研究人员投稿,文章如果被录用,…

ORACLE 数据泵导入导出数据
一、摘要 在平常备库和数据库迁移的时候,当遇到大的数据库的时候在用exp的时候往往是需要好几个小时,耗费大量时间。oracle10g以后可以用expdp来导出数据库花费的时间要远小于exp花费的时间,而且文件也要小很多。 二、exp/imp与expdp/impdp区…

java备忘录模式应用场景_图解Java设计模式之备忘录模式
图解Java设计模式之备忘录模式游戏角色状态恢复问题游戏角色有攻击力和防御力,在大战Boss前保存自身的状态(攻击力和防御力),当大战Boss后攻击力和防御力下降,从备忘录对象恢复到大战前的状态。传统方案解决游戏角色恢复传统的方式的问题分析…

一文掌握常用的机器学习模型(文末福利)
AI 科技大本营按:本文节选自微软亚洲研究院机器学习研究团队刘铁岩、陈薇、王太峰、高飞合著的《分布式机器学习:算法、理论与实践》一书。为了让大家更好地理解分布式机器学习,AI科技大本营联合华章科技特别邀请到了本书的作者之一——微软亚…

MYSQL替换语句
update dede_art set titlereplace(title, <IMG border0 srcImages/hot.gif>,);update 表名(比如我案例中的dede_art) set 要修改字段名 replace (要修改字段名,被替换的特定字符,替换成的字符) SELECT * FROM supe_spaceitems where subject like %狐狸天空% update …

phpstudy+phpstorm+debug
文:phpstudyphpstormdebug 一、配置前说明: 1、phpStudy集成了XDebug扩展,所以不用单独下载XDebug。 2、打开XDebug扩展:其它选项菜单 > PHP扩展 > Xdebug 二、配置步骤: 1、phpStudy当前版本: 2、修改php.ini…

java 卖票问题_Java之多线程窗口卖票问题(Thread)
/**** 例子:创建三个窗口卖票,总票数为100张.使用继承Thread类的方式** 存在线程的安全问题,待解决。**/class Window extends Thread{private static int ticket 100;Overridepublic void run() {while(true){if(ticket > 0){System.out…

雷军深情告白:在我心里,武汉大学是全球最好的大学
武汉大学将在 11 月 29 迎来 125 周年校庆,作为杰出校友,小米创始人雷军参加了昨天举行的第五届校友珞珈论坛。现场,雷军对武大深情表白:“马云在几个场合说过,杭州师范大学在他心里是全球最好的大学,没有之…

java中抽象接口_一篇文章让你彻底理解java中抽象类和接口
相信大家都有这种感觉:抽象类与接口这两者有太多相似的地方,又有太多不同的地方。往往这二者可以让初学者摸不着头脑,无论是在实际编程的时候,还是在面试的时候,抽象类与接口都显得格外重要!希望看完这篇博…

linux proc
/proc文件系统下的多种文件提供的系统信息不是针对某个特定进程的,而是能够在整个系统范围的上下文中使用。可以使用的文件随系统配置的变化而变化。 /proc/cmdline 这个文件给出了内核启动的命令行。 /proc/cpuinfo 这个文件提供了有关系统CPU的多种信息。 /proc/d…

专访英特尔AIPG全球研究负责人Casimir Wierzynski:物理学、隐私和大脑将根本性塑造AI
出品| AI 科技大本营 在 11 月 14 日至 15 日在北京召开的英特尔人工智能大会(AIDC)上,英特尔人工智能产品事业部(AIPG)全球研究负责人 Casimir Wierzynski 发表了主题为《人工智能研究——物理学、隐私和大脑》的演讲…

微软OOXML申请国际文档标准已获通过 中国投反对票
51CTO.com北京时间3月28日中午通过消息灵通人士获悉,微软新一代文档标准OOXML已经获得国际标准化组织(ISO)的通过。中国依然投反对票。 ISO共有104个成员,其中包括41个技术能力强、参与标准化活动多的“P成员”。若微软文档标准想…

java中的匿名类方法覆盖_Java技巧:用匿名类来实现简化程序调试
Java技巧:用匿名类来实现简化程序调试在Java中,匿名类(Anonymous inner classes)多用来处理事件(event handle)。但其实,它们对于debug也很有帮助。本文将介绍如何利用匿名类来简化你的debug。我们该如何调试那些非自己源码的方法调用呢&…

记录第一次在egret项目中使用Puremvc
这几天跟着另一个前端在做一个小游戏,使用的是egret引擎和puremvc框架,这对于我来说还是个比较大的突破吧,特此记录下。 因为在此项目中真是的用到了mvc及面向对象编程,值得学习 记录第一次在egret项目中使用Puremvc: …

使用CSS制作圆角效果
Web2.0中,圆角效果是很常见的,以前都是用图片来模仿,现在直接用css就能实现,例子代码如下 Html代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> &…

知识图谱升温之势已现,不要错失下一个AI风口
近年来,随着大家对高级认知能力的积极探索,知识图谱因为表达能力强,扩展性好,并能兼顾人类认知与机器自动处理,引起了学术界、工业界以及政府部门的高度关注。 最先被大家熟知的应用领域应属搜索引擎,为了…

干货 | 谷歌BERT模型fine-tune终极实践教程
作者 | 奇点机智从11月初开始,Google Research就陆续开源了BERT的各个版本。Google此次开源的BERT是通过TensorFlow高级API—— tf.estimator进行封装(wrapper)的。因此对于不同数据集的适配,只需要修改代码中的processor部分,就能进行代码的…

java简介 ppt 精_《JAVA》5选择结构精篇课件.ppt
《JAVA》5选择结构精篇课件选 择 结 构 if 语句 if – else语句 Switch语句 块作用域语句又被称为复合语句,其格式为:用一对花括号将若干条语句括起来,目的是从语法上可以将多条语句解释成一条语句。 { int temp; temp a; a b; …