参考サイト
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でカメラ画像取得中でも音声の録音、再生可