hls之xfopencv

电子说

1.3w人已加入

描述

  1. 为什么要引入xfopencv

 

vivado本身集成了opencv库以及hls视频库了,opencv不能被综合导出为RTL电路,hls视频库的功能有所欠缺,因此引入xfopencv作为既可以被综合导出为RTL电路,也能够实现opencv丰富的功能。

 

2.软件环境

 

vivado 2019.1,包含vivado,hls,以及SDSOC套件。

 

3.下载

 

1.打开github直接搜索xfopencv,如图所示

OpenCV

 

2.点击master->tags->选择与本身vivado匹配的版本(我的版本是2019.1,所以选择第一个)

 

OpenCV

 

4.使用(xfopencv/examples/canny)

 

1.解压下载的文档,创建HLS工程,右击source->add files,添加文件如如所示

OpenCV

2.右击Test Bench->add files,添加如下文件,其中im0.jpg在data文件夹

OpenCV

3.选中project->settings->syntheis 添加顶层文件,如图所示

OpenCV

4.然后选中xf_canny_accel.cpp文件,选择Edit GFLAS Dialog,用于添加xfopencv库,添加内容

-I <路径 to your xfopencv> -D__(双下划线)SDSVHLS__(双下划线)。

OpenCV

5.然后选择Simulation,对tb文件添加xfopencv库,方式同上,内容如下

-I <路径 to your xfopencv> -D__(双下划线)SDSVHLS__(双下划线) -std=c++0x

 

OpenCV

 

5.综合以及C仿真

1.综合

由于xf_canny_accel.cpp文件中的XF_USE_URAM未被定义,删掉后综合才能不出错

原始代码

 

xf::Canny(_src,_dst1,low_threshold,high_threshold);  //xf::xfMat2AXIvideo(nms_output, _dst1);  #pragma SDS wait(1)  //xf::AXIvideo2xfMat(_dst1, nms_output);  xf::EdgeTracing(_dst1,_dst2);

更改以后的代码

 

xf::Canny(_src,_dst1,low_threshold,high_threshold);  //xf::xfMat2AXIvideo(nms_output, _dst1);  #pragma SDS wait(1)  //xf::AXIvideo2xfMat(_dst1, nms_output);  xf::EdgeTracing(_dst1,_dst2);  //xf::xfMat2AXIvideo(edge_output, _dst2);}

2.C仿真

选择im0.jpg作为输入图片

原始图像:

OpenCV

opencv处理图像:

OpenCV

xfopencv处理图像:

OpenCV

以上为xfopencv的例子学习,关于xfopencv更加详细的介绍请参考xilinx官方文档ug1233

 

审核编辑 :李倩

 


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分