ひでみのアイデア帳

くだらないことなんだけど、忘れないために・・・

SDx+yocto+OpenCV3.1+FPGA

さて、ここからが問題です・・・

なにをFPGAしようかしら?

漠然とconvertScaleAbsをFPGA化してやろうと思ったんだけど、SDxの「Add HW Function」ボタンに一覧が登場しなかった。

そりゃそうだ。

ライブラリだもんなぁ〜。

まぁ、いいや。

まずはFPGAに落とせることを試してみよう。

とりあえず、コンパイルと配置配線が完了できるかが目標なので目的だから性能や動作は度外視で次のフェーズで・・・。

ソースはこんな感じでconv_dataをFPGA化する関数に指定した。

/*
 * OpenCV フィルタサンプル - ラプラシアン
 */
#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/imgproc.hpp>

int conv_data(unsigned char img_in[65536], unsigned char img_out[65536], int width, int height)
{

    for(int y = 0; y < height; y++){
        for(int x = 0; x < width; x++){
            img_out[y * width + x] = img_in[y * width + x];
        }
    }

    return 0;
}

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

  // Read lena-chan with Grayscale
  cv::Mat src = cv::imread("lena.png", 0);

  cv::Mat laplacian, tmp;
  cv::Laplacian(src, tmp, CV_32F, 3);
  cv::convertScaleAbs(tmp, laplacian, 1, 0);

  unsigned char* img = (unsigned char*)&laplacian.data[0];
  unsigned char* img2 = (unsigned char*)&tmp.data[0];

  conv_data(&img[0], &img2[0], src.cols, src.rows);

  // Write for laplacian not kuracian
  cv::imwrite("lena_laplacian.png", laplacian);

  return 0;
}

レッツゴー!

NGでした。

Vivado HLSでopencvのヘッダが無いとエラーが出ました。

そりゃ、Vivado HLSの環境まではいぢってないもん。

これは面倒だ。