0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

用Vitis HLS實(shí)現(xiàn)OpenCV仿真的方法

OpenFPGA ? 來源:OpenFPGA ? 2023-04-10 09:03 ? 次閱讀

這篇文章的基礎(chǔ)是《Windows上快速部署Vitis HLS OpenCV仿真》,我們使用的版本是Vitis HLS 2022.2,其他版本BUG不清楚,目前已知2021版本有BUG,只能使用其他方式,本文不適合。

這次選擇中值濾波這個(gè)常規(guī)算法作為演示算法。

算法原理

算法原理很簡單,我們先介紹均值濾波,因?yàn)榫€性濾波的基礎(chǔ)是均值濾波,中值濾波是在這個(gè)基礎(chǔ)上發(fā)展過來的。

均值濾波

圖像均值濾波是一種基本的圖像平滑處理方法,也被稱為“盒子濾波”或“平滑濾波”。它的主要思想是對(duì)圖像中的每個(gè)像素取一個(gè)局部均值,以降低圖像噪聲和細(xì)節(jié)對(duì)圖像邊緣檢測和其他計(jì)算機(jī)視覺算法的影響。

具體來說,圖像均值濾波涉及在圖像中移動(dòng)一個(gè)固定尺寸的窗口,例如 的窗口。對(duì)于每個(gè)窗口,計(jì)算窗口內(nèi)所有像素的平均值,并將該值分配給窗口中心的像素。這個(gè)過程將重復(fù)應(yīng)用于整個(gè)圖像,用于生成平滑的輸出圖像。

在進(jìn)行圖像處理時(shí),一張圖片可以看做一個(gè)矩陣,假設(shè)有個(gè)6x6圖片,如下:

a0ef85ca-d73a-11ed-bfe3-dac502259ad0.png

處理內(nèi)核如下:

a1019b52-d73a-11ed-bfe3-dac502259ad0.png

動(dòng)畫演示處理過程如下

特點(diǎn)

具有非常不具代表性的值的單個(gè)像素會(huì)顯著影響其鄰域中所有像素的平均值。

當(dāng)濾波器鄰域跨越邊緣時(shí),濾波器將為邊緣上的像素插入新值,從而模糊該邊緣。如果輸出中需要尖銳的邊緣,這可能是個(gè)問題。

這兩個(gè)問題都由中值濾波器解決,中值濾波器通常是比均值濾波器更好的降噪濾波器,但計(jì)算時(shí)間更長。

通常,均值濾波器充當(dāng)?shù)屯l率濾波器 ,因此減少了圖像中存在的空間強(qiáng)度導(dǎo)數(shù)。

上圖描繪了一個(gè)包含更廣泛不同空間頻率的場景。用 3×3 均值濾波器平滑一次后,我們得到

背景中的低空間頻率信息并未受到過濾的顯著影響,但前景對(duì)象的(曾經(jīng)清晰的)邊緣已被明顯平滑。用 7×7 均值濾波器過濾后,得到下圖

將此結(jié)果與通過在原始圖像上傳遞 3×3 均值濾波器三次獲得的結(jié)果進(jìn)行比較

上兩圖說明一個(gè)問題:對(duì)一幅圖像應(yīng)用大窗口的濾波器和應(yīng)用多次小窗口濾波器效果差不多。

常見變體

此處討論的均值平滑濾波器的變體包括:閾值平均,其中僅當(dāng)其原始值與平均值之間的差大于預(yù)設(shè)閾值時(shí)才改變中心像素值的條件下應(yīng)用平滑。這具有平滑噪聲的效果,圖像細(xì)節(jié)的損失較小。

其他不計(jì)算鄰域均值的卷積濾波器也經(jīng)常用于平滑。其中最常見的一種是高斯平滑濾波器。

中值濾波

圖像中值濾波是一種常用的非線性濾波方法,也被稱為排序?yàn)V波器。它的主要原理是將圖像中每個(gè)像素周圍的像素排序,并將排序后的中間值作為該像素的輸出值。

中值濾波可以有效地抑制圖像中的噪聲,同時(shí)保留圖像中細(xì)節(jié)和邊緣信息。相對(duì)于其他線性濾波器(如均值濾波器),它可以在更好地去除噪聲的同時(shí)保留圖像的細(xì)節(jié)和邊緣上提供更好的性能。

a1bfd626-d73a-11ed-bfe3-dac502259ad0.png

具體地,對(duì)于每個(gè)像素,中值濾波器會(huì)包括 個(gè)鄰域像素,其中 和 是正奇數(shù)。它們將以該像素為中心構(gòu)成一個(gè)矩形窗口或一個(gè)圓形窗口。

a1eb36b8-d73a-11ed-bfe3-dac502259ad0.png

窗口大小是中值濾波器的重要參數(shù)。在選擇窗口大小時(shí),應(yīng)該考慮噪聲的特性以及需要保留的圖像細(xì)節(jié)。通常情況下,窗口大小越大,中值濾波器能夠去除的噪聲越大,但也會(huì)導(dǎo)致圖像模糊。

然后,對(duì)于每個(gè)像素,將鄰域像素按灰度值進(jìn)行排序,取排序后的中間值作為該像素的輸出值。這個(gè)輸出值將取代原始圖像中的像素值,從而產(chǎn)生一個(gè)平滑且噪聲減少的圖像。

中值濾波器的優(yōu)點(diǎn)是它可以在去除噪聲的同時(shí)保留圖像中的邊緣和細(xì)節(jié),但它的缺點(diǎn)是計(jì)算成本較高,并且可能導(dǎo)致圖像的細(xì)節(jié)丟失。此外,當(dāng)噪聲水平很高時(shí),這種濾波器可能無法完全去除噪聲。

所有平滑技術(shù)都可以有效去除信號(hào)平滑塊或平滑區(qū)域中的噪聲,但會(huì)對(duì)邊緣產(chǎn)生不利影響。通常,在降低信號(hào)噪聲的同時(shí),保留邊緣也很重要。例如,邊緣對(duì)于圖像的視覺特性至關(guān)重要。對(duì)于小到中等水平的高斯噪聲,中值濾波器在去除噪聲方面明顯優(yōu)于高斯濾波,同時(shí)為給定的固定窗口大小保留邊緣。然而,對(duì)于高水平的噪聲,它的性能并不比高斯模糊好多少,而對(duì)于散斑噪聲和椒鹽噪聲(脈沖噪聲),它特別有效。正因?yàn)槿绱?,中值濾波在數(shù)字圖像處理中得到了非常廣泛的應(yīng)用。

OpenCV實(shí)現(xiàn)

使用OpenCV進(jìn)行算法驗(yàn)證和Matlab進(jìn)行算法驗(yàn)證其實(shí)思路差不多,先驗(yàn)證算法的效果再驗(yàn)證算法的正確性,這一步使用OpenCV和MatLab一樣,我們就使用OpenCV進(jìn)行驗(yàn)證,這一步就不實(shí)際展開了,代碼如下:

//-----------------------------------【頭文件包含部分】---------------------------------------
//描述:包含程序所依賴的頭文件
//----------------------------------------------------------------------------------------------
#include"opencv2/core/core.hpp"
#include"opencv2/highgui/highgui.hpp"
#include"opencv2/imgproc/imgproc.hpp"

//-----------------------------------【命名空間聲明部分】---------------------------------------
//描述:包含程序所使用的命名空間
//-----------------------------------------------------------------------------------------------
usingnamespacecv;

//-----------------------------------【main()函數(shù)】--------------------------------------------
//描述:控制臺(tái)應(yīng)用程序的入口函數(shù),我們的程序從這里開始
//-----------------------------------------------------------------------------------------------
intmain()
{
//載入原圖
Matimage=imread("1.jpg");

//創(chuàng)建窗口
namedWindow("中值濾波【原圖】");
namedWindow("中值濾波【效果圖】");

//顯示原圖
imshow("中值濾波【原圖】",image);

//進(jìn)行中值濾波操作
Matout;
medianBlur(image,out,7);

//顯示效果圖
imshow("中值濾波【效果圖】",out);

waitKey(0);
}

HLS加速和仿真

上面就完成了算法的介紹和論證,其中論證過程并沒有詳細(xì)介紹,因?yàn)楸酒恼轮攸c(diǎn)不是這個(gè),后續(xù)在介紹這個(gè)算法的時(shí)候再詳細(xì)展開。

HLS工程搭建

新建工程

如下:

a22eb654-d73a-11ed-bfe3-dac502259ad0.png

第二頁和第三頁不用管,后續(xù)再進(jìn)行設(shè)置

a2497868-d73a-11ed-bfe3-dac502259ad0.pnga2616310-d73a-11ed-bfe3-dac502259ad0.png

最后一頁,需要設(shè)置兩個(gè)地方,注意一個(gè)地方

a288066e-d73a-11ed-bfe3-dac502259ad0.png

其中,Uncertainty參數(shù)含義見下,默認(rèn)不設(shè)置即可。

在UG1399的set_clock_uncertainty章節(jié)有詳細(xì)介紹。

【uncertainty】:以 ns 為單位指定,表示時(shí)鐘周期中有多少被用作余量。不確定性也可以指定為時(shí)鐘周期的百分比。默認(rèn)的不確定性是時(shí)鐘周期的 27%。

也可以使用函數(shù):

set_clock_uncertainty

【uncertainty】:以 ns 為單位指定,表示時(shí)鐘周期中有多少被用作余量。不確定性也可以指定為時(shí)鐘周期的百分比。默認(rèn)的不確定性是時(shí)鐘周期的 27%。

【clock_list】:應(yīng)用不確定性的時(shí)鐘列表。如果未提供,它將應(yīng)用于所有時(shí)鐘。

添加源文件

新建xf_median_blur_accel.cpp

#include"xf_median_blur_config.h"

staticconstexprint__XF_DEPTH=(HEIGHT*WIDTH*(XF_PIXELWIDTH(TYPE,NPC1))/8)/(PTR_WIDTH/8);

voidmedian_blur_accel(ap_uint*img_in,introws,intcols,ap_uint*img_out){
//clang-formatoff
#pragmaHLSINTERFACEm_axiport=img_inoffset=slavebundle=gmem0depth=__XF_DEPTH
#pragmaHLSINTERFACEm_axiport=img_outoffset=slavebundle=gmem1depth=__XF_DEPTH
#pragmaHLSINTERFACEs_axiliteport=rowsbundle=control
#pragmaHLSINTERFACEs_axiliteport=colsbundle=control
#pragmaHLSINTERFACEs_axiliteport=returnbundle=control
//clang-formaton

xf::MatimgInput(rows,cols);
xf::MatimgOutput(rows,cols);

//clang-formatoff
#pragmaHLSDATAFLOW
//clang-formaton

//Retrievexf::Matobjectsfromimg_indata:
xf::Array2xfMat(img_in,imgInput);

//RunxfOpenCVkernel:
xf::medianBlur(
imgInput,imgOutput);

//Convert_dstxf::Matobjecttooutputarray:
xf::xfMat2Array(imgOutput,img_out);

return;
}//Endofkernel

添加仿真文件

新建xf_median_blur_tb.cpp

#include"common/xf_headers.hpp"
#include"xf_median_blur_config.h"

intmain(intargc,char**argv){
if(argc!=2){
fprintf(stderr,"Usage:%s",argv[0]);
returnEXIT_FAILURE;
}

cv::Matin_img,out_img,ocv_ref,diff;

//Readingintheimage:
#ifGRAY
in_img=cv::imread(argv[1],0);//readinginthegrayimage
#else
in_img=cv::imread(argv[1],1);//readinginthecolorimage
#endif

if(in_img.data==NULL){
fprintf(stderr,"ERROR:Cannotopenimage%s
",argv[1]);
returnEXIT_FAILURE;
}

//creatememoryforoutputimage
#ifGRAY
ocv_ref.create(in_img.rows,in_img.cols,CV_8UC1);
out_img.create(in_img.rows,in_img.cols,CV_8UC1);//creatememoryforoutputimage
diff.create(in_img.rows,in_img.cols,CV_8UC1);
#else
ocv_ref.create(in_img.rows,in_img.cols,CV_8UC3);
out_img.create(in_img.rows,in_img.cols,CV_8UC3);//creatememoryforoutputimage
diff.create(in_img.rows,in_img.cols,CV_8UC3);
#endif

//OpenCVreference:
cv::medianBlur(in_img,ocv_ref,WINDOW_SIZE);

//OpenCLsection:
#ifGRAY
size_timage_in_size_bytes=in_img.rows*in_img.cols*1*sizeof(unsignedchar);
#else
size_timage_in_size_bytes=in_img.rows*in_img.cols*3*sizeof(unsignedchar);
#endif
size_timage_out_size_bytes=image_in_size_bytes;

//Callthetopfunction
median_blur_accel((ap_uint*)in_img.data,in_img.rows,in_img.cols,(ap_uint*)out_img.data);

//Writedownoutputimages:
cv::imwrite("hls_out.jpg",out_img);//kerneloutput
cv::imwrite("ref_img.jpg",ocv_ref);//referenceimage

absdiff(ocv_ref,out_img,diff);
//Savethedifferenceimagefordebuggingpurpose:
cv::imwrite("error.png",diff);
floaterr_per;
xf::analyzeDiff(diff,10,err_per);
if(err_per>0.0f){
fprintf(stderr,"ERROR:TestFailed.
");
return1;
}else
std::cout<

設(shè)置仿真庫

在下面界面設(shè)置相關(guān)參數(shù):

a2a4fc10-d73a-11ed-bfe3-dac502259ad0.png

在這個(gè)界面設(shè)置

a2ca8afc-d73a-11ed-bfe3-dac502259ad0.png

1、Top Function

設(shè)置主函數(shù)的,點(diǎn)擊Browse進(jìn)行選擇即可。

2、設(shè)置設(shè)計(jì)文件Edit cflags,添加調(diào)用的設(shè)計(jì)頭文件

添加

-IE:/vitis_hls_image/Vitis_Libraries-2020.2/Vitis_Libraries-2020.2/vision/L1/include-std=c++0x-IH:/FILE/HLS/meanblur/src/build-I./.-D__SDSVHLS__-std=c++0x

3、設(shè)置設(shè)計(jì)文件Edit csimflags

-IE:/vitis_hls_image/Vitis_Libraries-2020.2/Vitis_Libraries-2020.2/vision/L1/include-std=c++0x-IH:/FILE/HLS/meanblur/src/build-I./.-D__SDSVHLS__-std=c++0x

接下來設(shè)置仿真庫路徑

a2ef1804-d73a-11ed-bfe3-dac502259ad0.png

1、設(shè)置仿真文件Edit cflags

-IE:/vitis_hls_image/opencv_lib/opencv/build_2/install/include-IE:/vitis_hls_image/Vitis_Libraries-2020.2/Vitis_Libraries-2020.2/vision/L1/include-IH:/FILE/HLS/meanblur/src/build-I.-std=c++0x-D__SDSVHLS__-std=c++0x

2、設(shè)置仿真文件Edit csimflags

-IE:/vitis_hls_image/opencv_lib/opencv/build_2/install/include-IE:/vitis_hls_image/Vitis_Libraries-2020.2/Vitis_Libraries-2020.2/vision/L1/include-IH:/FILE/HLS/meanblur/src/build-I.-std=c++0x-D__SDSVHLS__-std=c++0x

3、設(shè)置Linker Flags,調(diào)用OpenCV庫文件

-LE:/vitis_hls_image/opencv_lib/opencv/build_2/install/x64/mingw/lib-llibopencv_imgcodecs455-llibopencv_imgproc455-llibopencv_core455-llibopencv_highgui455-llibopencv_flann455-llibopencv_features2d455

4、 設(shè)置Input Arguments,這個(gè)是調(diào)用仿真圖片,可以后續(xù)再設(shè)置

H:/FILE/HLS/meanblur/src/128x128.png

綜合

點(diǎn)擊綜合按鈕即可開始綜合,結(jié)果如下:

a310e5f6-d73a-11ed-bfe3-dac502259ad0.png

仿真

點(diǎn)擊仿真按鈕得到下圖仿真結(jié)果

下圖從左到右分別為:OpenCV處理的結(jié)果、HLS處理的結(jié)果以及最后的兩個(gè)圖像差(無差別即全黑)。

聯(lián)合仿真

點(diǎn)擊聯(lián)合仿真按鈕后等待仿真結(jié)束,然后點(diǎn)擊下面按鈕查看波形:

a3746ff4-d73a-11ed-bfe3-dac502259ad0.pnga38dba7c-d73a-11ed-bfe3-dac502259ad0.png

導(dǎo)出IP

點(diǎn)擊導(dǎo)出IP按鈕等待導(dǎo)出即可。

總結(jié)

今天的例程演示完畢,從建立工程到最后導(dǎo)出IP,基本比較詳細(xì)。但是,上面的例程是不能直接應(yīng)用到視頻里的,原因是上面的接口沒經(jīng)過改動(dòng),需要從AXI轉(zhuǎn)成AXI-STREAM接口后再再接入到視頻架構(gòu)中即可,這部分我們后續(xù)再詳細(xì)說明。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 濾波器
    +關(guān)注

    關(guān)注

    160

    文章

    7706

    瀏覽量

    177489
  • 計(jì)算機(jī)視覺
    +關(guān)注

    關(guān)注

    8

    文章

    1694

    瀏覽量

    45901
  • OpenCV
    +關(guān)注

    關(guān)注

    29

    文章

    625

    瀏覽量

    41215
  • HLS
    HLS
    +關(guān)注

    關(guān)注

    1

    文章

    128

    瀏覽量

    23996

原文標(biāo)題:如何用 Vitis HLS 實(shí)現(xiàn) OpenCV 仿真

文章出處:【微信號(hào):Open_FPGA,微信公眾號(hào):OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    新手求助,HLS實(shí)現(xiàn)opencv算法加速的IP在vivado的使用

    我照著xapp1167文檔,HLS實(shí)現(xiàn)fast_corners的opencv算法,并生成IP。然后想把這個(gè)算法塞到第三季的CH05_AXI_DMA_OV5640_HDMI上,這個(gè)de
    發(fā)表于 01-16 09:22

    Vivado HLS實(shí)現(xiàn)OpenCV圖像處理的設(shè)計(jì)流程與分析

    像素訪問對(duì)應(yīng)方法2.3 HLS實(shí)現(xiàn)OpenCV應(yīng)用的實(shí)例(快速角點(diǎn)濾波器image_filter)我們通過快速角點(diǎn)的例子,說明通常用Viv
    發(fā)表于 07-08 08:30

    FPGA高層次綜合HLSVitis HLS知識(shí)庫簡析

    ,Vivado 2019.1之前(包括),HLS工具叫Vivado HLS,之后為了統(tǒng)一將HLS集成到Vitis里了,集成之后增加了一些功能,同時(shí)將這部分開源出來了。
    發(fā)表于 09-07 15:21

    使用Vitis HLS創(chuàng)建屬于自己的IP相關(guān)資料分享

    1、使用Vitis HLS創(chuàng)建屬于自己的IP高層次綜合(High-level Synthesis)簡稱HLS,指的是將高層次語言描述的邏輯結(jié)構(gòu),自動(dòng)轉(zhuǎn)換成低抽象級(jí)語言描述的電路模型的過程。對(duì)于AMD
    發(fā)表于 09-09 16:45

    利用Vitis HLS tcl shell一鍵跑通視覺加速例程

    高層次綜合工具中調(diào)用視覺庫遇到的大多數(shù)問題都和 opencv 庫以及Xilinx Vision 庫的安裝路徑有關(guān),如今 Vitis HLS 2020.1 之后的版本都不再提供OpenCV
    的頭像 發(fā)表于 12-29 11:12 ?3380次閱讀
    利用<b class='flag-5'>Vitis</b> <b class='flag-5'>HLS</b> tcl shell一鍵跑通視覺加速例程

    Vitis Vision | 利用Vitis HLS tcl shell 一鍵跑通視覺加速例程

    在論壇上遇到在高層次綜合工具中調(diào)用視覺庫遇到的大多數(shù)問題都和 opencv 庫以及Xilinx Vision 庫的安裝路徑有關(guān),如今 Vitis HLS 2020.1 之后的版本都不再提供
    發(fā)表于 01-27 06:17 ?6次下載
    <b class='flag-5'>Vitis</b> Vision | 利用<b class='flag-5'>Vitis</b> <b class='flag-5'>HLS</b> tcl shell 一鍵跑通視覺加速例程

    基于Vitis HLS的加速圖像處理

    使用Vivado / Vitis工具提供預(yù)安裝的OpenCV版本。盡管Vitis_hls編譯Vision庫不需要OpenCV,但是用戶測試驗(yàn)證使用時(shí)
    的頭像 發(fā)表于 02-16 16:21 ?2392次閱讀
    基于<b class='flag-5'>Vitis</b> <b class='flag-5'>HLS</b>的加速圖像處理

    Vitis HLS工具簡介及設(shè)計(jì)流程

    Vitis HLS 是一種高層次綜合工具,支持將 C、C++ 和 OpenCL 函數(shù)硬連線到器件邏輯互連結(jié)構(gòu)和 RAM/DSP 塊上。Vitis HLS 可在
    的頭像 發(fā)表于 05-25 09:43 ?2304次閱讀

    Vitis HLS如何添加HLS導(dǎo)出的.xo文件

    HLS導(dǎo)出的.xo文件如何導(dǎo)入到Vitis里面?需要把.xo文件解壓,然后把文件夾導(dǎo)入到Vitis Kernel/src文件夾下嗎?
    的頭像 發(fā)表于 08-03 11:20 ?3026次閱讀
    <b class='flag-5'>Vitis</b> <b class='flag-5'>HLS</b>如何添加<b class='flag-5'>HLS</b>導(dǎo)出的.xo文件

    Vitis HLS前端現(xiàn)已全面開源

    Vitis HLS 工具能夠?qū)?C++ 和 OpenCL 功能部署到器件的邏輯結(jié)構(gòu)和 RAM/DSP 塊上。在 GitHub 上提供 Vitis HLS 前端為研究人員、開發(fā)人員和編譯
    的頭像 發(fā)表于 08-03 09:53 ?918次閱讀

    Vitis HLS知識(shí)庫總結(jié)

    對(duì)于AMD Xilinx而言,Vivado 2019.1之前(包括),HLS工具叫Vivado HLS,之后為了統(tǒng)一將HLS集成到Vitis里了,集成之后增加了一些功能,同時(shí)將這部分開
    的頭像 發(fā)表于 09-02 09:06 ?3387次閱讀

    理解Vitis HLS默認(rèn)行為

    相比于VivadoHLS,Vitis HLS更加智能化,這體現(xiàn)在Vitis HLS可以自動(dòng)探測C/C++代碼中可并行執(zhí)行地部分而無需人工干預(yù)添加pragma。另一方面VitisHLS也
    的頭像 發(fā)表于 11-24 11:42 ?1789次閱讀

    AMD全新Vitis HLS資源現(xiàn)已推出

    AMD Vitis HLS 工具允許用戶通過將 C/C++ 函數(shù)綜合成 RTL,輕松創(chuàng)建復(fù)雜的 FPGA 算法。Vitis HLS 工具與 Vivado Design Suite(用于
    的頭像 發(fā)表于 04-23 10:41 ?1054次閱讀
    AMD全新<b class='flag-5'>Vitis</b> <b class='flag-5'>HLS</b>資源現(xiàn)已推出

    如何在Vitis HLS GUI中使用庫函數(shù)?

    Vitis? HLS 2023.1 支持新的 L1 庫向?qū)В疚膶⒅v解如何下載 L1 庫、查看所有可用功能以及如何在 Vitis HLS GUI 中使用庫函數(shù)。
    的頭像 發(fā)表于 08-16 10:26 ?1124次閱讀
    如何在<b class='flag-5'>Vitis</b> <b class='flag-5'>HLS</b> GUI中使用庫函數(shù)?

    Vitis HLS移植指南

    電子發(fā)燒友網(wǎng)站提供《Vitis HLS移植指南.pdf》資料免費(fèi)下載
    發(fā)表于 09-13 09:21 ?0次下載
    <b class='flag-5'>Vitis</b> <b class='flag-5'>HLS</b>移植指南