#CycloneVSoCにOpenCVを組み込んでUSBカメラの映像をLinux Desktopに表示する
##はじめに
Cyclone V SoCをつかった基板でAIの開発をする際、カメラ映像の取り込みはベースとなるので、自分への忘却録としても手順を記載したいと思います。
##開発環境(Linux)
- クロスコンパイル環境: VirtualBox グラフィカルユーザーインターフェースバージョン 6.1.14 r140239 (Qt5.6.2)
- ゲストOS:Ubuntu18.04lts
- FPGAコンパイル環境:Quartus Prime Version 18.1.1 build 646
##Linux Desktopの構築
こちらのサイトの7.6.2項までを参考に、Cyclone V SoCにLinux Desktopのインストールをします。
https://rocketboards.org/foswiki/Projects/OpenVINOForSoCFPGA
手順は上記サイトを参考に、下記の変更を加えています。
- ツールチェーン:gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz
- Linuxカーネル: socfpga-5.4.45-lts
- rootfs:linaro-stretch-developer-20170706-43.tar.gz
##OpenCVのインストール
下記公式サイトを参考にインストールを進めていきます。
https://docs.opencv.org/4.4.0/d7/d9f/tutorial_linux_install.html
###ツールのインストール
$ sudo apt-get install build-essential
$ sudo sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
$ sudo apt-get install python-dev python-numpy libtbb2 libtbb5-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev
公式には、libtbb-devが指定してありましたが、パッケージが見つからなかったので代わりにlibtbb5-devを、libjasper-devは見つからなかったので省略します。
###GitからOpenCVをチェックアウト
$ git clone https://github.com/opencv/opencv.git
$ git clone https://github.com/opencv/opencv_contrib.git
###OpenCVのビルド
$ cd ~/opencv
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
$ make -j2
###OpenCVのインストール
$ sudo make install
正常にインストールされているか確認します。Pythonのインタラクティブコンソールを使えば確認できると思います。
$ Python3
>>> import cv2
>>>
エラーが出ずにプロンプト>>>が返ってくれば正常にインストールされていると思います。
##Pythonプログラム
#!/usr/bin/env python3
import cv2
cap = cv2.VideoCapture(0)
while(True):
ret, frame = cap.read()
if not ret:
break
cv2.imshow('preview', frame)
key = cv2.waitKey(1)
if key == 27: # ESC
break
cap.release()
cv2.destroyAllWindows()
##実行
下記でプログラムを実行すれば、カメラの映像がWindowに表示されます。
$ python3 preview.py