红娃子

红娃子

0个粉丝

4

问答

0

专栏

0

资料

红娃子  发布于  2021-03-30 15:39:47
采纳率 0%
4个问答
6116

hi3559 opencv gpu加速

     

目的:测试canny算子有无GPU情况下的性能

问题:程序卡死在opencv调用opencl加速的地方

硬件:Hi3559a官方开发板
软件:Hi3559AV100_SDK_V2.0.3.1

操作步骤:

1.移植最新的opencv4.5.1(跑过很多其他测试程序了,移植没得什么大问题,打开了了opencl的宏的)
2.编译GPU的内核驱动,最终我的加载驱动的脚本为如下:

    insmod hi_osal.ko anony=1 mmz_allocator=hisi mmz=anonymous,0,$mmz_start,$mmz_size:window,0,0x100100000,7M || report_error
    insmod hi3559av100_base.ko
    insmod hi3559av100_sys.ko
    insmod hifb.ko video="hifb:vram0_size:32400,vram1_size:16200,vram2_size:256"     # default fb0:4k,fb1:1080p,fb2:256x256
    insmod hi_dbe.ko
    insmod mali_kbase.ko

加载过程无报错。

3.添加gpu应用层驱动到LD_LIBRARY_PATH
4.编写测试程序链接
编译无任何警告,最终测试程序如下:

#include <opencv2/opencv.hpp>
#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/core/ocl.hpp>

using namespace std;
using namespace cv;

void test_canny_opencl(void){
    ocl::setUseOpenCL(true);
    UMat src, bw, blur, edge;
    src = imread("girl.jpg").getUMat(ACCESS_RW);
    cvtColor(src, bw, COLOR_BGR2GRAY);
    GaussianBlur(bw, blur, Size(3, 3), 0);
    Canny(blur, edge, 50, 100, 3);
        //ocl::setUseOpenCL(false);
}

void test_canny_normal(void){
    Mat src, bw, blur, edge;
    src = imread("girl.jpg");
    cvtColor(src, bw, COLOR_BGR2GRAY);
    GaussianBlur(bw, blur, Size(3, 3), 0);
    Canny(blur, edge, 50, 100, 3);
}

int main()
{
    double start,duration;
    start = static_cast<double>(getTickCount());
    test_canny_normal();
    duration = ((double)getTickCount() - start) / getTickFrequency();
    cout << "test_canny_normal cost time is: " << duration * 1000 << "ms" << endl;

    start = static_cast<double>(getTickCount());
    test_canny_opencl();
    duration = ((double)getTickCount() - start) / getTickFrequency();
    cout << "test_canny_opencl cost time is: " << duration * 1000 << "ms" << endl;

    return 0;
}

执行时卡死在 canny_opencl_test的cvtColor函数,发出如下警告信息:
getCacheDirectory Using world accessible cache directory. This may be not secure: /var/tmp/

我来回答
回答4个
时间排序
认可量排序

红娃子

0个粉丝

4

问答

0

专栏

0

资料

红娃子 2021-03-30 16:10:03
认可0

<< duration * 1000 << “ms” << endl;?????

这个写没有问题呀,c++版本的,我也是复制其他正确的,编译都是零警告的

david

41个粉丝

368

问答

253

专栏

229

资料

david 2021-03-30 17:58:58
认可0
ocl::setUseOpenCL(true);
UMat src, bw, blur, edge;
src = imread("girl.jpg").getUMat(ACCESS_RW);
cvtColor(src, bw, COLOR_BGR2GRAY);
GaussianBlur(bw, blur, Size(3, 3), 0);
Canny(blur, edge, 50, 100, 3);

src 打印出来看看呢

红娃子

0个粉丝

4

问答

0

专栏

0

资料

红娃子 2021-03-31 14:17:14
认可0

ocl::setUseOpenCL(true);
UMat src, bw, blur, edge;
src = imread(“girl.jpg”).getUMat(ACCESS_RW);
cvtColor(src, bw, COLOR_BGR2GRAY);
GaussianBlur(bw, blur, Size(3, 3), 0);
Canny(blur, edge, 50, 100, 3);

src 打印出来看看呢 

我在每行都加了打印,打印死在cvtColor这里,只是一个警告而已,
getCacheDirectory Using world accessible cache directory. This may be not secure: /var/tmp/
imread可以正常返回,可以获得图像的尺寸信息

david

41个粉丝

368

问答

253

专栏

229

资料

david 2021-04-01 12:22:09
认可0

意思是看看src内容是啥

或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区