AM5728/AM57XX openCV使用opencl案例一(Sobel算法)

来源:本站
导读:目前正在解读《AM5728/AM57XX openCV使用opencl案例一(Sobel算法)》的相关信息,《AM5728/AM57XX openCV使用opencl案例一(Sobel算法)》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《AM5728/AM57XX openCV使用opencl案例一(Sobel算法)》的详细说明。
简介:OpenCV(Open Source Computer Vision Library)是一个基于BSD许可开源发行的跨平台计算机视觉库。实现图像处理和计算机视觉方面的很多通用计算。

OpenCV介绍:

OpenCV(Open Source Computer Vision Library)是一个基于BSD许可开源发行的跨平台计算机视觉库。实现图像处理和计算机视觉方面的很多通用计算。

OpenCV-OpenCL加载:

Opencv3.1架构添加新的概念transparent API(T-API)去允许opencl加速。相比之前旧版本,更简单的使用OpenCL。如果想要OpenCV下调用OpenCL。需要将transparent API 下定义UMat数据结构替换旧版本的Mat数据结构。

下面将讲解sobel算法如何使用OpenCL加速

首先定义UMat变量存储每一帧图像,通过相机采集图像,读取到当前帧,经过cvColor将原图转变为灰度图像,再进行sobel算法,最后循环显示出当前帧。默认是启用opencl,当按下键盘上'c'按键时,将关闭opencl的使用。具体代码如下:

UMat frame, grad, src_gray;

UMat grad_x, grad_y;

UMat abs_grad_x, abs_grad_y;

VideoCapture capture(1);

if(!capture.isOpened()){

cerr << "open fail !n" << endl;

return 1;

}

while(1) {

capture >> frame;

if (frame.empty())

break;

cvtColor(frame, src_gray, COLOR_RGB2GRAY);

Sobel(src_gray, grad_x, CV_16S, 1, 0, 3, 1, 0, BORDER_DEFAULT);

convertScaleAbs(grad_x, abs_grad_x);

Sobel(src_gray, grad_y, CV_16S, 0, 1, 3, 1, 0, BORDER_DEFAULT);

convertScaleAbs(grad_y, abs_grad_y);

addWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, 0, grad);

imshow("Sobel", grad);

char key = (char)waitKey(30);

switch (key) {

case 27: //escape key

return 0;

case 'c':

cv::ocl::setUseOpenCL(!ocl::useOpenCL());

default:

break;

}

}

提醒:《AM5728/AM57XX openCV使用opencl案例一(Sobel算法)》最后刷新时间 2024-03-14 01:00:47,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《AM5728/AM57XX openCV使用opencl案例一(Sobel算法)》该内容的真实性请自行鉴别。