AM5728/AM57XX openCV使用opencl实现Sobel算法

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;
}

}

粽子糖果 发表于11-29 09:58 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

粽子糖果
粽子糖果(总统)
金币:41624个|学分:51977个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号