FC2カウンター FPGAの部屋 reVISION, xfOpenCV
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

Vivado HLS 2019.2 で xfOpenCV のAXI4-Stream 版 medianblur をやってみる2

Vivado HLS 2019.2 で xfOpenCV のAXI4-Stream 版 medianblur をやってみる1”の続き。

前回は、新たに作り直したAXI4-Steram 版の medianblur のソースコードを貼った。今回は、カラー画像出力と白黒画像出力の C シミュレーションを行った。

まずは、”Vivado HLS 2019.2 で xfOpenCV のAXI4-Stream 版 medianblur をやってみる1”のソースコードそのままのカラー画像出力の場合を示す。こちらは、xf::Mat の画像のタイプが XF_8UC3 で AXI4-Stream のデータ幅が 32 ビットとなっている。(hls::stream<ap_axiu<32,1,1,1> >)
C シミュレーションを行った。結果を示す。
xfOpenCV_91_200310.png

medianblur/solution1/csim/build ディレクトリを示す。
xfOpenCV_92_200311.png

これが元画像の im0.jpg で、xfopencv/examples/medianblur/data/im0.jpg を、Pinta ツールのサイズ変換で 800 x 450 ピクセルに縮小して、ノイズを加えた画像である。
xfOpenCV_93_200311.jpg

これを、ハードウェアでメディアンフィルタをかけた画像を示す。(今回は、C シミュレーションだが)
xfOpenCV_94_200311.jpg

ノイズが低減されている。

次に、OpenCV の cv::medianBlur() を使ってメディアンフィルタをかけた画像を示す。
xfOpenCV_95_200311.jpg

こちらも同じようにノイズが低減されている。

次に、白黒画像出力に設定変更して C シミュレーションを行った。define の RGB を 0 にして、GRAY を 1 にした。
xfOpenCV_96_200311.png

こちらは、xf::Mat の画像のタイプが XF_8UC1 で AXI4-Stream のデータ幅が 8 ビットとなっている。(hls::stream<ap_axiu<8,1,1,1> >)

C シミュレーションを行った。結果を示す。
xfOpenCV_97_200311.png

medianblur/solution1/csim/build ディレクトリを示す。
xfOpenCV_98_200311.png

ハードウェアでメディアンフィルタをかけた画像を示す。(今回は、C シミュレーションだが)
xfOpenCV_99_200311.jpg

OpenCV の cv::medianBlur() を使ってメディアンフィルタをかけた画像を示す。
xfOpenCV_100_200311.jpg

うまく行って良かった。
  1. 2020年03月12日 04:33 |
  2. reVISION, xfOpenCV
  3. | トラックバック:0
  4. | コメント:0

Vivado HLS 2019.2 で xfOpenCV のAXI4-Stream 版 medianblur をやってみる1

Vivado HLS 2019.2 で xfOpenCV の medianblur をやってみる1”で動いていた AXI4-Stream 版 medianblur が動かなくなったと書いたが、これは、画像の大きさを指定するところで、height と width を取り違えていたからだった。4k2k 画像から HD 画像に変更しようとして、height と width を間違ってしまっていたのだった。orz

新たに作り直したAXI4-Steram 版の medianblur を紹介する。だいぶ自分の書き方になってきたのだが、xf_headers.h は Xilinx 社のソースコードをそのまま使用している。
なお、白黒画像とカラー画像を define で切り替えるようにしてある。

最初に xf_median_blur.h を貼っておく。

// xf_median_blur.h
// 2020/03/09 by marsee
// xfopencv/examples/medianblur/xf_median_blur_config.h のコードを引用している
// https://github.com/Xilinx/xfopencv/blob/master/examples/medianblur/xf_median_blur_config.h
// xfopencv/examples/medianblur/xf_config_params.h のコードを引用している
// https://github.com/Xilinx/xfopencv/blob/master/examples/medianblur/xf_config_params.h

#ifndef __XF_MEDIAN_BLUR_H__
#define __XF_MEDIAN_BLUR_H__

#include "hls_stream.h"
#include "ap_int.h"
#include "common/xf_common.h"
#include "imgproc/xf_median_blur.hpp"
#include "common/xf_axi_sdata.h"

#define NO  1  // Normal Operation
#define RO  0  // Resource Optimized

#define RGB 1
#define GRAY 0

/* Filter window size*/
#define WINDOW_SIZE 3

/*  set the height and weight  */
#define WIDTH  1920
#define HEIGHT 1080

#if NO
#define NPxPC XF_NPPC1
#else
#define NPxPC XF_NPPC8
#endif

#if GRAY
#define TYPE XF_8UC1
#define CHANNELS 1
#define STREAMW 8
#else
#define TYPE XF_8UC3
#define CHANNELS 3
#define STREAMW 32
#endif

typedef hls::stream<ap_axiu<STREAMW,1,1,1> > AXI_STREAM;

#endif


xf_median_blur.cpp を貼っておく。
(2020/03/12:修正) img_height と img_width を AXI4-Lite Slave に変更した。

// xf_median_blur.cpp
// 2020/03/08 by marsee

// xfopencv/HLS_Use_Model/Standalone_HLS_AXI_Example/xf_ip_accel_app.cpp のコードを引用している
// https://github.com/Xilinx/xfopencv/blob/master/HLS_Use_Model/Standalone_HLS_AXI_Example/xf_ip_accel_app.cpp
// xfopencv/examples/medianblur/xf_median_blur_accel.cpp のコードを引用している
// https://github.com/Xilinx/xfopencv/blob/master/examples/medianblur/xf_median_blur_accel.cpp

#include "xf_median_blur.h"
#include "common/xf_infra.h"

void median_blur_accel(xf::Mat<TYPE, HEIGHT, WIDTH, NPxPC> &_src, xf::Mat<TYPE, HEIGHT, WIDTH, NPxPC> &_dst)
{
    xf::medianBlur <WINDOW_SIZE, XF_BORDER_REPLICATE, TYPE, HEIGHT, WIDTH,  NPxPC> (_src, _dst);
}

void xf_median_blur(AXI_STREAM& _src, AXI_STREAM& _dst, int img_height, int img_width){
#pragma HLS INTERFACE s_axilite port=img_width
#pragma HLS INTERFACE s_axilite port=img_height
#pragma HLS INTERFACE s_axilite port=return
#pragma HLS INTERFACE axis register both  port=_src
#pragma HLS INTERFACE axis register both  port=_dst

     xf::Mat<TYPE, HEIGHT, WIDTH, NPxPC> img_in(img_height, img_width);
     xf::Mat<TYPE, HEIGHT, WIDTH, NPxPC> img_out(img_height, img_width);

#pragma HLS stream variable=img_in.data dim=1 depth=16
#pragma HLS stream variable=img_out.data dim=1 depth=16
#pragma HLS dataflow

    xf::AXIvideo2xfMat(_src, img_in);

    median_blur_accel(img_in, img_out);

    xf::xfMat2AXIvideo(img_out, _dst);
}


最後にテストベンチの xf_median_blur_tb.cpp を貼っておく。

// xf_median_blur_config_tb.cpp
// 2020/03/08 by marsee

// xfopencv/HLS_Use_Model/Standalone_HLS_AXI_Example/xf_dilation_tb.cpp のコードを引用している
// https://github.com/Xilinx/xfopencv/blob/master/HLS_Use_Model/Standalone_HLS_AXI_Example/xf_dilation_tb.cpp
// xfopencv/examples/medianblur/xf_median_blur_tb.cpp のコードを引用している
// https://github.com/Xilinx/xfopencv/blob/master/examples/medianblur/xf_median_blur_tb.cpp

#include "xf_headers.h"
#include "xf_median_blur.h"
#include "common/xf_infra.h"
#include "common/xf_axi.h"

void xf_median_blur(AXI_STREAM& _src, AXI_STREAM& _dst, int img_height, int img_width);

int main(int argc, char** argv)
{

    if(argc != 2)
    {
        fprintf(stderr,"Invalid Number of Arguments!\nUsage:\n");
        fprintf(stderr,"<Executable Name> <input image path> \n");
        return -1;
    }

    cv::Mat out_img,ocv_ref;
    cv::Mat in_img,in_img1,diff;

    // reading in the color image
#if GRAY
    in_img = cv::imread(argv[1], 0);
#else
    in_img = cv::imread(argv[1], 1);
#endif
    if (in_img.data == NULL)
    {
        fprintf(stderr,"Cannot open image at %s\n", argv[1]);
        return 0;
    }
    // create memory for output images
    /*  reading the gray/color image  */
#if GRAY
    ocv_ref.create(in_img.rows,in_img.cols,CV_8UC1);
    out_img.create(in_img.rows,in_img.cols,CV_8UC1);
    diff.create(in_img.rows,in_img.cols,CV_8UC1);
    in_img1.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);
    diff.create(in_img.rows,in_img.cols,CV_8UC3);
    in_img1.create(in_img.rows,in_img.cols,CV_8UC3);
#endif
    int img_height = in_img.rows;
    int img_width = in_img.cols;

    /////////////////   Opencv  Reference  ////////////////////////
    cv::medianBlur(in_img,ocv_ref,WINDOW_SIZE);
    cv::imwrite("out_ocv.jpg", ocv_ref);

    AXI_STREAM _src,_dst;

    cvMat2AXIvideoxf<NPxPC>(in_img, _src);
    xf_median_blur(_src, _dst, img_height, img_width);
    AXIvideo2cvMatxf<NPxPC>(_dst, in_img1);

    cv::imwrite("hls.jpg", in_img1);
    //////////////////  Compute Absolute Difference ////////////////////

    cv::absdiff(ocv_ref, in_img1, diff);

    float err_per;
    xf::analyzeDiff(diff,0,err_per);
    cv::imwrite("diff_img.jpg",diff);

    in_img.~Mat();
    out_img.~Mat();
    ocv_ref.~Mat();
    in_img.~Mat();
    in_img1.~Mat();
    diff.~Mat();

    if(err_per > 0.0f)
    {
        return 1;
    }

    return 0;
}


Vivado HLS 2019.2 で medianblur プロジェクトを作成した。
xfOpenCV_90_200310.png

Vivado HLS 2019.2 の Project メニューから Project Settings... を選択すると、Project Settings (medianblur) ダイアログが開く。
Project Settings (medianblur) ダイアログで、Simulation をクリックして、xf_median_blur_tb.cpp の CFLAGS に

-D__SDSVHLS__ -I/home/masaaki/xfopencv/include --std=c++0x

を設定した。
また、Input Arguments に

im0.jpg

を設定した。

同様に、Project Settings (medianblur) ダイアログで、Synthesis をクリックして、 xf_median_blur.cpp の CFLAGS に

-D__SDSVHLS__ -I/home/masaaki/xfopencv/include --std=c++0x

を設定した。

最後に Solution メニューの Solution Settings... を選択して、Solution Settings (solution1) ダイアログが表示される。 Cosimulation をクリックして、Input Arguments に

im0.jpg

を設定した。

im0.jpg は”Vivado HLS 2019.2 で xfOpenCV の medianblur をやってみる1”と同じもので、ノイズを加えてあるカラー画像となっている。これは、xfopencv/examples/medianblur/data/im0.jpg を、Pinta ツールのサイズ変換で 800 x 450 ピクセルに縮小して、ノイズを加えた画像である。
  1. 2020年03月11日 04:23 |
  2. reVISION, xfOpenCV
  3. | トラックバック:0
  4. | コメント:0

Vivado HLS 2019.2 で xfOpenCV の medianblur をやってみる2

Vivado HLS 2019.2 で xfOpenCV の medianblur をやってみる1”の続き。

前回は、medianblur の Mat 画像版というか、xfOpenCV の medianblur サンプルそのままをやってみようということで、C シミュレーションを行って、ノイズ除去することができた。今回は、C コードの合成、C/RTL 協調シミュレーション、Export RTL を行う。

C コードの合成を行った。
xfOpenCV_86_200310.png

Latency の max は 8339545 クロックだった。画像の大きさは、3840 x 2160 ピクセルの 4k 画像なので、8294400 ピクセルとなる。8339545 クロック / 8294400 ピクセル ≒ 1.005 クロック / ピクセルだったので、性能的には問題ない。

Instance をクリックして Loop の値を表示できるところまで遡って見た。
xfOpenCV_87_200310.png

次に C/RTL 協調シミュレーションを行ったところエラーになった。
xfOpenCV_88_200310.png

エラーメッセージを貼っておく。

ERROR: System recieved a signal named SIGSEGV and the program has to stop immediately!
This signal was generated when a program tries to read or write outside the memory that is allocated for it, or to write memory that can only be read.
Possible cause of this problem may be: 1) the depth setting of pointer type argument is much larger than it needed; 2)insufficient depth of array argument; 3)null pointer etc.
Current execution stopped during CodeState = DUMP_INPUTS.
You can search CodeState variable name in apatb*.cpp file under ./sim/wrapc dir to locate the position.


ERROR: [COSIM 212-360] Aborting co-simulation: C TB simulation failed.
ERROR: [COSIM 212-320] C TB testing failed, stop generating test vectors. Please check C TB or re-run cosim.
ERROR: [COSIM 212-5] *** C/RTL co-simulation file generation failed. ***
ERROR: [COSIM 212-4] *** C/RTL co-simulation finished: FAIL ***
command 'ap_source' returned error code


Export RTL を行った。
xfOpenCV_89_200310.png

CP achieved post-implementation も 3.775 ns なので、問題無さそうだ。

次には、うまく行った AXI4-Stream 版の medianblur を書いておく。
  1. 2020年03月10日 04:46 |
  2. reVISION, xfOpenCV
  3. | トラックバック:0
  4. | コメント:0

Vivado HLS 2019.2 で xfOpenCV の medianblur をやってみる1

もう1つ xfOpenCV をやってみようということで、日曜日の朝に AXI4-Stream 版の medianblur を作って、C シミュレーション、C コードの合成までできていたはずだったが、日曜日の夕方にカラー画像だったので、白黒画像でやってみようと思ったら AXI4-Stream から Mat 変換で empty だと言われて止まらなくなった。カラー画像対応に戻しても同様に C シミュレーションが動かなくなった。まだ修復できていないので、medianblur の Mat 画像版というか、xfOpenCV の medianblur サンプルそのままをやってみよう。

xfOpenCV の medianblur サンプルそのままなので、ソースコードはそのまま使用しているが、xf_config_param.h は RGB を 1 に、GRAY を 0 に define している。

#define RGB 1
#define GRAY 0


medianblur の Vivado HLS 2019.2 medianblur2 プロジェクトを示す。
xfOpenCV_78_200309.png

Vivado HLS 2019.2 の Project メニューから Project Settings... を選択すると、Project Settings (medianblur2) ダイアログが開く。
Project Settings (medianblur2) ダイアログで、Simulation をクリックして、xf_median_blur_tb.cpp の CFLAGS に

-D__SDSVHLS__ -I/home/masaaki/xfopencv/include --std=c++0x

を設定する。
Input Arguments に

im0.jpg

を設定した。
xfOpenCV_79_200309.png

同様に、Project Settings (medianblur2) ダイアログで、Synthesis をクリックして、

-D__SDSVHLS__ -I/home/masaaki/xfopencv/include --std=c++0x

を設定する。
xfOpenCV_80_200309.png

C シミュレーションを行った。
xfOpenCV_81_200309.png

成功だ。

medianblur2/solution1/csim/build ディレクトリを示す。
xfOpenCV_82_200309.png

元画像の im0.jpg を示す。
im0.jpg はノイズを加えてある800 x 450 ピクセルのカラー画像となっている。これは、xfopencv/examples/medianblur/data/im0.jpg をPinta ツールのサイズ変換で 800 x 450 ピクセルに縮小して、ノイズを加えた画像である。
xfOpenCV_83_200309.jpg

メジアンフィルタをハードウェアでかけた hls_out.jpg を示す。ノイズがかなり除去されている。
xfOpenCV_84_200309.jpg

OpenCV でメジアンフィルタをかけた ref_img.jpg を示す。こちらもノイズがかなり除去されている。
xfOpenCV_85_200309.jpg
  1. 2020年03月09日 07:00 |
  2. reVISION, xfOpenCV
  3. | トラックバック:0
  4. | コメント:0

Vivado HLS 2019.2 で xfOpenCV を使用する8(resize 3)

Vivado HLS 2019.2 で xfOpenCV を使用する7(resize 2)”の続き。

前回は、resize の C シミュレーションを行った。 800 x 600 ピクセルの画像を 60 x 45 ピクセルに変換した時は、本当に画像が薄くなってしまった。80 x 60 ピクセルの画像に変換した時も 60 x 45 ピクセルよりは濃くなったが、やはり薄かった。ユーザーズガイドを見たところ、縮小は 1/4 までだったので、200 x 150 ピクセルの画像に変更したところ、正常に縮小することができた。
今回は、200 x 150 ピクセルに縮小する場合の C コードの合成、C/RTL 協調シミュレーション、Export RTL を行う。

C コードの合成を行った。
xfOpenCV_73_200302.png

Latcncy の max は 487696 クロックだった。総ピクセル数は 480000 ピクセルなので、487696 / 480000 ≒ 1.02 クロック/ピクセルだった。性能は十分だ。
リソース使用量も BRAM_18K が 3 個、 LUT が 5 % 程度で、それほど消費していない。これは制限の範囲だったら使えそうだ。

C/RTL 協調シミュレーションを行った。
xfOpenCV_74_200302.png

Latency は 485494 クロックだった。良さそうだ。

C/RTL 協調シミュレーションの波形を示す。全体波形から。
xfOpenCV_75_200302.png

p_dst_TAVLID は画像を縮小しているので、櫛形になっている。

拡大波形を示す。
xfOpenCV_76_200302.png

p_src_TREADY がほとんど 1 なので、スループットは取れているようだ。

Export RTL を行った。
xfOpenCV_77_200302.png

リソース使用量もそこそこだし、CP achieved post-implementation が 4.332 ns で良さそうだ。
  1. 2020年03月03日 05:04 |
  2. reVISION, xfOpenCV
  3. | トラックバック:0
  4. | コメント:0

Vivado HLS 2019.2 で xfOpenCV を使用する7(resize 2)

Vivado HLS 2019.2 で xfOpenCV を使用する6(resize 1)”の続き。

前回は、resize をやってみようということで、 xfOpenCV の examples/resize を使用しているが、sobel_filter と同様に、AXI4-Stream 入出力に変更するために xf_resize.cpp を追加した。そのソースコードを貼って、Vivado 2019.2 のプロジェクトを生成した。
今回は、resize の C シミュレーションを行う。

C シミュレーションを行った。
xfOpenCV_58_200301.png

resize/solution1/csim/build ディレクトリを示す。
xfOpenCV_59_200301.png

hls_out.png がほとんど真っ暗だった。

hls_out.png を表示した。
xfOpenCV_60_200301.png

何とか薄っすらと見える。
xfOpenCV_60_200301.png

OpenCV の結果の resize_ocv.png を見ると、正常に縮小されている。
xfOpenCV_61_200301.png

xf_config_param.h の INTERPOLATION を 1 に変更してみよう。1 は、Bilinear Interpolation だ。今までの INTERPOLATION は 2 で、 AREA Interpolation だった。
xfOpenCV_62_200301.png

結果の hls_out.png が完全におかしい。
xfOpenCV_63_200301.png

hls_out.png を表示した。
xfOpenCV_64_200301.png

xf_config_param.h の INTERPOLATION を 0 に変更してみよう。 0 は Nearest Neighbor Interpolation だ。
xfOpenCV_65_200301.png

1 と同様に、hls_out.png が完全におかしい。
xfOpenCV_66_200301.png

resize 後のサイズを上げてみる。
60 x 45 ピクセルから 80 x 60 ピクセルに変更した。 1/10 倍だ。 INTERPOLATION は 2 に戻した。
xfOpenCV_67_200301.png

resize/solution1/csim/build ディレクトリを示す。
xfOpenCV_68_200301.png

hls_out.png の画像が濃くなってきた。
xfOpenCV_69_200301.png

ザイリンクス OpenCV ユーザ ー ガイド UG1233 (v2019.1) 2019 年 6 月 5 日”の 230 ページの”解像度変換/リサイズ (resize)”を見ると、画像の縮小方向は 1/4 以上がサポート範囲だそうだ。 引用する。

解像度変換/リサイズ (resize)
解像度変換は、元の画像のサイズをターゲットの画像サイズに変換するのに使用される方法です。リサイズ関数には、最近傍補間、バイリニア補間、エリア補間など、さまざまな補間方法を使用できます。補間タイプは、API にテンプレート パラメーターとして渡すことができます。指定可能な補間タイプは次のとおりです。
• XF_INTERPOLATION_NN: 最近傍補間
• XF_INTERPOLATION_BILINEAR: バイリニア補間
• XF_INTERPOLATION_AREA: エリア補間
注記: ダウンスケールには 0.25 以上、アップスケールには 8 以下のスケール係数がサポートされます。


ということで、 1/4 でやってみよう。つまり、200 x 150 ピクセルだ。
xfOpenCV_70_200301.png

resize/solution1/csim/build ディレクトリを示す。縮小されているようだ。
xfOpenCV_71_200301.png

hls_out.png を表示した。
xfOpenCV_72_200301.png

200 x 150 ピクセルでは、 1 の Bilinear Interpolation でも、 0 の Nearest Neighbor Interpolation でも、うまく縮小できている。
しかし、HLS Video Library でできたていたサイズがうまくできないので、800 x 600 ピクセルの画像を 60 x 45 ピクセルの画像に変換するという用途には使えない。
ただ、 INTERPOLATION が増えていて、Bilinear Interpolation 以外も OK になったのが良かった。

これからは、HLS Video Library との比較のために、同じ縮小方式の Bilinear Interpolation でやっていこう。
  1. 2020年03月02日 05:26 |
  2. reVISION, xfOpenCV
  3. | トラックバック:0
  4. | コメント:0

Vivado HLS 2019.2 で xfOpenCV を使用する6(resize 1)

Vivado HLS 2019.2 で xfOpenCV を使用する5(sobel filter 3)”の続き。

前回は、sobel_filter をやってみたが、今回は、resize をやってみよう。 xfOpenCV の examples/resize を使用しているが、sobel_filter と同様に、AXI4-Stream 入出力に変更するために xf_resize.cpp を追加してある。
xfOpenCV_52_200301.png

xf_resize.cpp を示す。

// xf_resize.cpp
// 2020/02/20 by marsee

// xfopencv/HLS_Use_Model/Standalone_HLS_AXI_Example/xf_ip_accel_app.cpp のコードを引用している
// https://github.com/Xilinx/xfopencv/blob/master/HLS_Use_Model/Standalone_HLS_AXI_Example/xf_ip_accel_app.cpp

#include "xf_resize_config.h"
#include "common/xf_infra.h"

void resize_accel(xf::Mat<TYPE, HEIGHT, WIDTH, NPC1> &_src, xf::Mat<TYPE, NEWHEIGHT, NEWWIDTH, NPC1> &_dst);

void xf_resize(hls::stream< ap_axiu<8,1,1,1> >& _src,hls::stream< ap_axiu<8,1,1,1> >& _dst){
#pragma HLS INTERFACE axis register both  port=_src
#pragma HLS INTERFACE axis register both  port=_dst

     xf::Mat<TYPE, HEIGHT, WIDTH, NPC1> img_in(HEIGHT,WIDTH);
     xf::Mat<TYPE, NEWHEIGHT, NEWWIDTH, NPC1> img_out(NEWHEIGHT,NEWWIDTH);

#pragma HLS stream variable=img_in.data dim=1 depth=16
#pragma HLS stream variable=img_out.data dim=1 depth=16
#pragma HLS dataflow

    xf::AXIvideo2xfMat(_src, img_in);

    resize_accel(img_in, img_out);

    xf::xfMat2AXIvideo(img_out, _dst);
}


どのサイズに resize するか?だが、”Vivado HLS で画像のサイズを縮小して白黒変換(resize_gray)”でやったように 800 x 600 ピクセルの画像を 60 x 45 ピクセルに変更してみよう。
画像サイズを指定するのは、xf_config_param.h なので、編集する。
xfOpenCV_53_200301.png

Vivado HLS 2019.2 で resize プロジェクトを作成した。
Ultra96 用の xczu3eg-sbva484-1-e をPart に設定した。Clock Period は 5 ns とした。
xfOpenCV_54_200301.png

xfOpenCV を実行する際の設定を行った。
Project メニューから Project Settings... を選択して、Project Settings (resize) を表示させた。
Simulation をクリックした。
xf_resize_tb.cpp の CFLAGS に -D__SDSVHLS__ -I../../xfopencv/include --std=c++0x を入力した。
Input Arguments に straight0.bmp を入力した。
xfOpenCV_55_200301.png

Synthesis をクリックした。
xf_resize.cpp と xf_resize_accel.cpp の CFLAGS に -D__SDSVHLS__ -I../../xfopencv/include --std=c++0x を入力した。
Top Function に xf_resize を入力した。
xfOpenCV_56_200301.png

Solution メニューから Solution Settings... を選択した。
Solution Settings (solution1) ダイアログが表示された。
Cosimulation をクリックした。
Input Arguments に straight0.bmp を入力した。
xfOpenCV_57_200301.png
  1. 2020年03月01日 05:48 |
  2. reVISION, xfOpenCV
  3. | トラックバック:0
  4. | コメント:0
»