kezunlin · 2020年01月10日

使用OpenCL提升OpenCV图像处理性能

本文首发于个人博客https://kezunlin.me/post/59afd8b3/,欢迎阅读最新内容!

speed up opencv image processing with OpenCL
<!--more-->

Guide

OpenCL is a framework for writing programs that execute on these heterogenous platforms. The developers of an OpenCL library utilize all OpenCL compatible devices (CPUs, GPUs, DSPs, FPGAs etc) they find on a computer / device and assign the right tasks to the right processor.
Keep in mind that as a user of OpenCV library you are not developing any OpenCL library. In fact you are not even a user of the OpenCL library because all the details are hidden behind the transparent API/TAPI.

config

cmake config by default for compiling OpenCV:

WITH_OPENCL ON

example

Mat

#include "opencv2/opencv.hpp"
using namespace cv;
 
int main(int argc, char** argv)
{
    Mat img, gray;
    img = imread("image.jpg", IMREAD_COLOR);
     
    cvtColor(img, gray, COLOR_BGR2GRAY);
    GaussianBlur(gray, gray,Size(7, 7), 1.5);
    Canny(gray, gray, 0, 50);
     
    imshow("edges", gray);
    waitKey();
    return 0;
}

UMat

#include "opencv2/opencv.hpp"
using namespace cv;
 
int main(int argc, char** argv)
{
    UMat img, gray;
    imread("image.jpg", IMREAD_COLOR).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;
}
UMat with transparent API/TAPI

Reference

History

  • 20190626: created.

Copyright

推荐阅读
关注数
2
文章数
52
[链接] C++,Python. Computer Vision and Deep Learning.
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息