Xacti テスト@ Jetson Nano

参考サイト

OpenCV公式:Reading and Writing Video
g++によるOpenCVのコンパイル
libasoundによりPCM音声録音
alsa-utils(GitHub)

環境

Jetson Nano Developer Kit
 (jetson-nano-jp461-sd-card-image.zip)
Xacti CX-WE100

作業内容

映像接続テスト

・XactiをUSBに接続
・Ubuntu 標準のカメラアプリCheeseを起動
 →No device found
・/dev/ 内に media1 video0 の追加を確認
・OpenCVのサンプルで画像の取り込みは出来た。

[main.cpp]

#include "opencv2/opencv.hpp"

using namespace cv;

int main(int, char**){
    VideoCapture cap(0);
    if(!cap.isOpened()){
        printf("camera open error");
        return -1;
    }
    
    Mat edges;
    namedWindow("edges", 1);
    for(;;){
        cap>>edges;
        imshow("edges", edges);
        if(waitKey(30) >=0)break;
    }
    return 0;
}

[MakeFile]

FILE = main.cpp
HDIR = -I/usr/include/opencv4/
LDIR = -L/usr/lib/aarch64-linux-gnu/
OPT = -lopencv_core -lopencv_imgproc -lopencv_imgcodecs -lopencv_videoio -lopencv_highgui 

a.out: $(FILE)
	$(CXX) $(FILE) -Wall $(HDIR) $(LDIR)  $(OPT) 

※opencv.hpp があらゆるヘッダを読み込むためのヘッダであったため、リンクする必要のあるライブラリを絞り込むのに苦労した。

音声接続テスト

音声録音環境設定

・alsa-utils インストール

$ sudo apt install alsa-utils
 :
alsa-utils is already the newest version
 :

・サウンドデバイスの確認

$ arecord -l
 :
 :
card 2: CXWE100 [CX-WE100], device 0; USB Audio [USB Audio]
 Subdevices: 1/1
 Subdevice #0: subdevice #0

・録音→再生

$ arecord -twav -D hw:2,0 -f S16_LE -d 60 ./sample.wav
Recording WAVE './sample.wav' : Signed 16 bit Little Endian, Rate 8000 Hz, Mono
Warning: rate is not accurate (request = 8000Hz, got = 48000Hz)
         please, try the plug plugin
$ aplay ./sample.wav

※S16_LEはAvailable formatsとして唯一表示されたもの
※サンプリングレートを指定しないと8000Hzになる模様
※再生に使ったのはその辺のUSBスピーカー

・OpenCVでカメラ画像取得中でも音声の録音、再生可