Jetson NanoでWebカメラ
Jetson Nanoでカメラ使いたいけど、組み込み向けのはよくわかんねえよ。と思ったのでWebカメラで簡単に撮像してみた。安物なので画質はよろしくないが、とりあえず試してみたい、という方は参考にしてください。
使ったもの
Jetson Nano 4GB
BUFFALO マイク内蔵120万画素Webカメラ
セットアップ
前準備としてJetson Nanoは起動できるところまで済ませておくこと。
接続
Jetson Nanoの電源を入れて、ターミナルを開く。
接続確認のためにWebカメラを接続(すでに接続してある場合は抜き差し)して、ターミナルで下記コマンドを実行。
$ dmesg
すると、BAFFALOのカメラが接続されているっぽいことがわかる。この出力だとusb 1-2.1に接続されている。
[ 110.858165] usb 1-2.1: new high-speed USB device number 5 using tegra-xusb [ 111.225241] usb 1-2.1: New USB device found, idVendor=0411, idProduct=0260 [ 111.225246] usb 1-2.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ 111.225249] usb 1-2.1: Product: BUFFALO BSWHD06M USB Camera [ 111.225252] usb 1-2.1: Manufacturer: KYE Systems Corp. [ 111.234231] uvcvideo: Found UVC 1.00 device BUFFALO BSWHD06M USB Camera (0411:0260)
無事に接続できたので、実際に動かしてみます。 いくつかサンプルプログラムは入っているのですが、自分のNanoがモニターにつながっておらず使えなかったのでPythonでコードを書きました。
準備:OpenCVのビルド
カメラ操作にはOpenCVが楽なのでOpenCVのインストールを行います。ただ、PIP等ではインストールできなかったのでソースコードからビルドします。
幸いビルド用のスクリプトを配布してくれている方がいるのでそれを使用します。
GitHub - mdegans/nano_build_opencv: Build OpenCV on Nvidia Jetson Nano
$ git clone https://github.com/mdegans/nano_build_opencv.git $ cd nano_build_opencv $ ./build_opencv.sh
待ちます。(完了まで1時間くらい?とにかく長いです)
完了したら動作確認します。
$ python3 >>>import cv2 >>>
import cv2でエラーがでなければひとまずOKです。
カメラ撮像
実際に動かしてみます。Jupyter notebookで下記を実行してください。
import cv2 %matplotlib inline import matplotlib.pyplot as plt DEVICE_ID = 0 # open cap = cv2.VideoCapture (DEVICE_ID) # capture _, frame = cap.read() if(frame is not None): # show frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) plt.imshow(frame) else: print("Failed video capture!") # releace cap.release() cv2.destroyAllWindows()
無事撮影できればOKです。