Jetsonで使えるカメラ
Jetsonを購入したはいいが、いったいどのカメラが対応していて、どのカメラが対応していないのかが、わからない人は多いのではないでしょうか? Jetsonに接続できるカメラは、CSI端子のカメラとUSB端子のカメラに集約されます。
CSI端子のカメラ
CSI端子のカメラは、SONYのIMX219搭載のものが標準で対応しています。それ以外のカメラは、Driver周りを独自にインストールする必要があり、茨の道です。
IMX219搭載のカメラが、世の中にはたくさんあるので、そこから選択するといいでしょう。RaspberryPi Camera V2などもIMX219が搭載されています。
USB端子のカメラ
USBカメラの場合は、USB-UVCに対応したものの多くが使用できます。したがって、USBカメラならほとんどがJetsonに接続できるでしょう。
USBカメラを取り込むポイントとして、GStreamerのv4l2srcを使って取り込みます。この取り込み時のパラメーター調整で多くのカメラを対応させる事が可能です。
sudo apt install v4l-utils
接続されているカメラ一覧を表示するには、下記のコマンドを使います。
v4l2-ctl --list-device
カメラのパラメーターを取得するには、下記のコマンドを使います。
v4l2-ctl -d /dev/video0 --list-formats-ext
Logitech C270n
v4l2-ctl -d /dev/video0 --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'YUYV'
Name : YUYV 4:2:2
Size: Discrete 640x480
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
...
Size: Discrete 1280x720
Interval: Discrete 0.133s (7.500 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 1280x960
Interval: Discrete 0.133s (7.500 fps)
Interval: Discrete 0.200s (5.000 fps)
Index : 1
Type : Video Capture
Pixel Format: 'MJPG' (compressed)
Name : Motion-JPEG
Size: Discrete 640x480
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
...
Size: Discrete 1280x720
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 1280x960
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Logitech C270nは、フォーマットがYUYVとMJPEGに対応しています。
YUYVで 640x480 30fpsで取り込んで画面に表示
gst-launch-1.0 v4l2src device="/dev/video0" ! \
'video/x-raw, width=640, height=480, framerate=30/1' ! \
videoconvert ! \
nv3dsink
MJPEGで 1280x720 30fpsで取り込んで画面に表示
gst-launch-1.0 v4l2src device="/dev/video0" ! \
'image/jpeg, width=1280, height=720, framerate=30/1' ! \
jpegdec ! \
nv3dsink
BUFFALO BSWHD06MWH
v4l2-ctl -d /dev/video0 --list-formats-ext
BUFFALO BSWHD06MWHも、フォーマットがYUYVとMJPEGに対応しています。
YUYVで 640x480 30fpsで取り込んで画面に表示
gst-launch-1.0 v4l2src device="/dev/video0" ! \
'video/x-raw, width=640, height=480, framerate=30/1' ! \
videoconvert ! \
nv3dsink
MJPEGで 1280x720 30fpsで取り込んで画面に表示
gst-launch-1.0 v4l2src device="/dev/video0" ! \
'image/jpeg, width=1280, height=720, framerate=30/1' ! \
jpegdec ! \
nv3dsink
ELECON OCAM-VRU01BK
ELECOMのスマフォ用の360度もつないでテスト
v4l2-ctl -d /dev/video0 --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'MJPG' (compressed)
Name : Motion-JPEG
Size: Discrete 1472x736
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 2176x1088
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 3008x1504
Interval: Discrete 0.033s (30.000 fps)
Index : 1
Type : Video Capture
Pixel Format: 'H264' (compressed)
Name : H.264
Size: Discrete 1920x960
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.042s (24.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Size: Discrete 2560x1280
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.042s (24.000 fps)
Interval: Discrete 0.050s (20.000 fps)
MJPEG, 1472x636 30fpsで取り込み
gst-launch-1.0 v4l2src device="/dev/video0" ! \
'image/jpeg, width=1472, height=736, framerate=30/1' ! \
jpegdec ! \
nv3dsink
H264、1920x960 30fpsで取り込み(速度がでない?)
gst-launch-1.0 v4l2src device="/dev/video0" io-mode=2 ! \
'video/x-h264, width=1920, height=960, framerate=30/1' ! \
queue ! \
nvv4l2decoder ! \
nv3dsink
Insta 360 AIR
Insta 360 AIRとELECON OCAM-VRU01BKは中身は同じっぽい?
v4l2-ctl -d /dev/video0 --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'MJPG' (compressed)
Name : Motion-JPEG
Size: Discrete 1472x736
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 2176x1088
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 3008x1504
Interval: Discrete 0.033s (30.000 fps)
Index : 1
Type : Video Capture
Pixel Format: 'H264' (compressed)
Name : H.264
Size: Discrete 1920x960
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.042s (24.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Size: Discrete 2560x1280
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.042s (24.000 fps)
Interval: Discrete 0.050s (20.000 fps)
MJPEG, 1472x636 30fpsで取り込み
gst-launch-1.0 v4l2src device="/dev/video0" ! \
'image/jpeg, width=1472, height=736, framerate=30/1' ! \
jpegdec ! \
nv3dsink
H264、1920x960 30fpsで取り込み(速度がでない?)
gst-launch-1.0 v4l2src device="/dev/video0" io-mode=2 ! \
'video/x-h264, width=1920, height=960, framerate=30/1' ! \
queue ! \
nvv4l2decoder ! \
nv3dsink
Jiusion Digital Microscope
Amazonで売っている安いUSB-UVC対応の顕微鏡。
v4l2-ctl -d /dev/video0 --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'YUYV'
Name : YUYV 4:2:2
Size: Discrete 640x480
Interval: Discrete 0.040s (25.000 fps)
Size: Discrete 160x120
Interval: Discrete 0.040s (25.000 fps)
Size: Discrete 176x144
Interval: Discrete 0.040s (25.000 fps)
Size: Discrete 320x240
Interval: Discrete 0.040s (25.000 fps)
Size: Discrete 352x288
Interval: Discrete 0.040s (25.000 fps)
Size: Discrete 640x480
Interval: Discrete 0.040s (25.000 fps)
YUYVのみサポート
gst-launch-1.0 v4l2src device="/dev/video0" ! \
'video/x-raw, width=640, height=480, framerate=25/1' ! \
videoconvert ! \
nv3dsink
USB Scope
v4l2-ctl -d /dev/video0 --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'MJPG' (compressed)
Name : Motion-JPEG
Size: Discrete 640x480
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 352x288
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 320x240
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 176x144
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 160x120
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 960x540
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 1024x768
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 1280x720
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 1280x960
Interval: Discrete 0.033s (30.000 fps)
Index : 1
Type : Video Capture
Pixel Format: 'YUYV'
Name : YUYV 4:2:2
Size: Discrete 640x480
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 352x288
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 320x240
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 176x144
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 160x120
Interval: Discrete 0.033s (30.000 fps)
MJPEG
gst-launch-1.0 v4l2src device="/dev/video0" ! \
'image/jpeg, width=1280, height=720, framerate=30/1' ! \
jpegdec ! \
nv3dsink
H264
gst-launch-1.0 v4l2src device="/dev/video0" ! \
'video/x-raw, width=640, height=480, framerate=30/1' ! \
videoconvert ! \
nv3dsink
その他のUSB カメラ
IMX291搭載カメラ, IMX317搭載カメラ, OV4689搭載カメラなどもUSB UVCに対応しているので、Jetsonで動作可能です。