-
為什么要引入xfopencv
vivado本身集成了opencv庫以及hls視頻庫了,opencv不能被綜合導出為RTL電路,hls視頻庫的功能有所欠缺,因此引入xfopencv作為既可以被綜合導出為RTL電路,也能夠實現(xiàn)opencv豐富的功能。
2.軟件環(huán)境
vivado 2019.1,包含vivado,hls,以及SDSOC套件。
3.下載
1.打開github直接搜索xfopencv,如圖所示
2.點擊master->tags->選擇與本身vivado匹配的版本(我的版本是2019.1,所以選擇第一個)
4.使用(xfopencv/examples/canny)
1.解壓下載的文檔,創(chuàng)建HLS工程,右擊source->add files,添加文件如如所示
2.右擊Test Bench->add files,添加如下文件,其中im0.jpg在data文件夾
3.選中project->settings->syntheis 添加頂層文件,如圖所示
4.然后選中xf_canny_accel.cpp文件,選擇Edit GFLAS Dialog,用于添加xfopencv庫,添加內(nèi)容
-I <路徑 to your xfopencv> -D__(雙下劃線)SDSVHLS__(雙下劃線)。
5.然后選擇Simulation,對tb文件添加xfopencv庫,方式同上,內(nèi)容如下
-I <路徑 to your xfopencv> -D__(雙下劃線)SDSVHLS__(雙下劃線) -std=c++0x
5.綜合以及C仿真
1.綜合
由于xf_canny_accel.cpp文件中的XF_USE_URAM未被定義,刪掉后綜合才能不出錯
原始代碼
xf::Canny
(_src,_dst1,low_threshold,high_threshold); //xf::xfMat2AXIvideo(nms_output, _dst1);
//xf::AXIvideo2xfMat(_dst1, nms_output);
xf::EdgeTracing
(_dst1,_dst2);
更改以后的代碼
xf::Canny
(_src,_dst1,low_threshold,high_threshold); //xf::xfMat2AXIvideo(nms_output, _dst1);
//xf::AXIvideo2xfMat(_dst1, nms_output);
xf::EdgeTracing
(_dst1,_dst2); //xf::xfMat2AXIvideo(edge_output, _dst2);
}
2.C仿真
選擇im0.jpg作為輸入圖片
原始圖像:
opencv處理圖像:
xfopencv處理圖像:
以上為xfopencv的例子學習,關于xfopencv更加詳細的介紹請參考xilinx官方文檔ug1233
審核編輯 :李倩
-
RTL
+關注
關注
1文章
385瀏覽量
59809 -
OpenCV
+關注
關注
31文章
635瀏覽量
41361 -
HLS
+關注
關注
1文章
129瀏覽量
24126
原文標題:hls之xfopencv
文章出處:【微信號:Hack電子,微信公眾號:Hack電子】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論