专栏首页SnailTyanOpenCV的Transparent API

OpenCV的Transparent API

1. Transparent API

OpenCV 3中的Transparent API就是OpenCV 2中的OCL模块,从OpenCV 3开始,已经没有OCL模块,取而代之的是Transparent API。Transparent API主要是用来提升性能的。

2. Usage

  • 普通的Mat写法:
#include "opencv2/opencv.hpp"
using namespace cv;

int main(int argc, char** argv)
{
    Mat img, gray;
    img = imread("image.jpg", 1);

    cvtColor(img, gray, COLOR_BGR2GRAY);
    GaussianBlur(gray, gray,Size(7, 7), 1.5);
    Canny(gray, gray, 0, 50);

    imshow("edges", gray);
    waitKey();
    return 0;
}
  • Transparent API写法(UMat)
#include "opencv2/opencv.hpp"
using namespace cv;

int main(int argc, char** argv)
{
    UMat img, gray;
    imread("image.jpg", 1).copyTo(img);

    cvtColor(img, gray, COLOR_BGR2GRAY);
    GaussianBlur(gray, gray,Size(7, 7), 1.5);
    Canny(gray, gray, 0, 50);

    imshow("edges", gray);
    waitKey();
    return 0;
}

其实主要是将Mat变为UMat,其它的不变。Mat变为UMat有两种方式,一种是copyTo,一种是getUMat

# copyTo
UMat img;
imread("image.jpg", 1).copyTo(img);

# getUMat
Mat mat = imread("image.jpg", IMREAD_COLOR); 
// Get umat from mat. 
UMat umat = mat.getUMat(flag);

flag下选项有ACCESS_READ,ACCESS_WRITE,ACCESS_RW,ACCESS_FAST

3. How to accelerate?

Transparent API主要是使用了OpenCL来进行加速,下面是OpenCL的介绍。

OpenCL(Open Computing Language,开放计算语言)是一个为异构平台编写程序的框架,此异构平台可由CPU、GPU、DSP、FPGA或其他类型的处理器与硬件加速器所组成。OpenCL由一门用于编写kernels(在OpenCL设备上运行的函数)的语言(基于C99)和一组用于定义并控制平台的API组成。OpenCL提供了基于任务分区和数据分区的并行计算机制。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • redis5.x新特性,Stream流数据类型使用简单教程

    事实上Redis的数据类型一直都是二进制安全的,几乎每一种数据类型都是可以用来存储流的。那为什么Redis 5.0要引用Stream数据类型呢? 具体如何使用?

    猿哥
  • 带你用 Python + 人脸识别自动裁剪头像

    对于这个需求,大家的第一反应可能是 PS,但 PS 用来干这件事情我觉得太“重”了,有没有更轻便的办法来实现呢?

    不二小段
  • 关于FaaS和微服务,什么是最合理的架构

    又是翻译一篇,主要在概念和使用场景上来介绍FaaS和微服务,并不是介绍他们具体是什么。而是在对服务架构和业务结合的角度上去看待架构问题。微服务不是全部也不是未来...

    黑光技术
  • 滴滴AI新算法包揽全球人脸检测评测5项第一,一带一路大秀无人驾驶肌肉

    在世界最权威的人脸检测公开评测集WIDER FACE最新公布的评测结果中,滴滴AI Labs团队联合北京邮电大学PRIS团队提出的人脸检测DFS算法,在WIDE...

    量子位
  • 微服务架构解析:API Fortress,一曲数字化交响乐

    我最喜欢设计和构建的东西,就是作业编排。我乐于设想软件的每个组成部分是如何构成一幅宏大的图景,系统在高负载或者系统失败等各种不同的场景下如何产生反馈。

    yuanyi928
  • Clarifai:每个零售商都需要了解的5个AI定义

    越来越多的零售商正求助于人工智能来解决问题和优化业务,以寻求制定更好的计划,同时希望帮助购物者更快找到产品的电子商务经理。到2022年,全球零售商在人工智能上的...

    AiTechYun
  • iOS离屏渲染

    有时候面试偶尔会有面试官问你什么是离屏渲染?什么情况下会触发?该如何应对?接下面一一讲解。

    赵哥窟
  • 浏览器中的JavaScript:文档对象模型与 DOM 操作[每日前端夜话0x5F]

    翻译:疯狂的技术宅 原文:https://www.valentinog.com/blog/dom/

    疯狂的技术宅
  • 想了解漫威的各种信息?推荐你使用这个API

    今天要说的这个接口,之所以称为“强大”,因为它返回的内容里蕴含了未知的巨大能量,大到可以轻松毁灭宇宙 N 次……

    sergiojune
  • 架构图以及vue的简介

    MVVM 由 Model,View,ViewModel 三部分构成,Model 层代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑;View 代表...

    Dawnzhang

扫码关注云+社区

领取腾讯云代金券