真夜中にSDxのツールチェーンをyoctoツールチェーンに入れ替えたところまでは実験が完了した。
まずはyoctoで作成したSDKをSDxに適用して、OpenCV 3.1のコンパイルの実験です。
linarr-gccの最新バージョンが使えるのは副産物でこれが実は本題なのです。
Vivado HLSにもOpenCV付いていますがバージョンは2.4.5です。
古いソースコードだったらまだしも、今、OpenCVを使って最初から2.4系で開発する人いるのかな?
俺だったら絶対にありえない。
当然、3.1系からスタートする。
それで、ハード化するのに2.4系にデグレするんですか?
こんなのも絶対にありえない。
ソースコードは次のようにしました。
yoctoのSDKにOpenCV 3.1を追加して、SDx+yocto構成にして、最終的にはSDxで何らかの処理をFPGA化するのでひとまず、玲奈姫をリード&ライトで締めくくってみた。
/*
* OpenCV フィルタサンプル - ラプラシアン
*/
#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/imgproc.hpp>
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);
// Write for laplacian not kuracian
cv::imwrite("lena_laplacian.png", laplacian);
return 0;
}
まずは、FPGA化しないでOpenCVが通るか実験です。
これが通らなきゃ意味がない。
想定では、まだFPGA化しないのでこの段階がソフトウェア開発のアルゴリズム設計に当たります。
さて、うまく行くのやら?
Vivado_HLSにopencv2ヘッダがいて邪魔してるなぁ。
こんなの削除しちゃえぇ〜!
そして、ビルドゴー!
ちょっと、待って、チーン♪
できました。
そりゃ、ただのソフトウェアのコンパイルだから通るだろう。
まず、第一関門突破!