ArchLinux,MATLAB,制御理論など(の予定)

MATLAB on Arch LinuxでUSB接続WEBカメラを使う

2016-09-27

MATLAB経由で取った画像 参考URL - Webcam setup - Install the Webcam Support Package - GStreamer 普段遣いのPCのOSはArch Linuxなのですが、MATLABでUSB接続のWEBカメラを使うのに多少手こずったのでメモ。 ちなみに私の原環境は以下の通り。 - カーネルのバージョン

1
2
%uname -a
Linux KOU 4.7.4-1-ARCH #1 SMP PREEMPT Thu Sep 15 15:24:29 CEST 2016 x86_64 GNU/Linux

USB接続状態を確認 #

1
2
3
4
5
6
7
8
9
% lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 006: ID 0bda:57c4 Realtek Semiconductor Corp.
Bus 001 Device 005: ID 8087:07dc Intel Corp.
Bus 001 Device 004: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 001 Device 009: ID 0ac8:3420 Z-Star Microelectronics Corp. Venus USB2.0 Camera
Bus 001 Device 003: ID 0483:91d1 STMicroelectronics Sensor Hub
Bus 001 Device 007: ID 046d:0825 Logitech, Inc. Webcam C270
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

0ac8:3420,046d:0825がそれぞれBuffaloとLogicoolです。 # USB接続時にカーネルモジュールが読み込まれているか確認する Logicoolの接続時

1
2
3
4
5
% dmesg|tail
//抜粋
[ 7573.937294] usb 1-1: new high-speed USB device number 10 using xhci_hcd
[ 7574.332083] uvcvideo: Found UVC 1.00 device <unnamed> (046d:0825)
[ 7574.424913] input: UVC Camera (046d:0825) as /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/input/input22

Buffaloの接続時

1
2
3
4
5
% dmesg|tail
//抜粋
[ 7739.811705] usb 1-4: new high-speed USB device number 11 using xhci_hcd
[ 7740.041374] uvcvideo: Found UVC 1.00 device USB Camera (0ac8:3420)
[ 7740.047870] input: USB Camera as /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/input/input23

おそらくEntity type for ~ was not initialized!みたいなメッセージが出ると思いますが、問題ありませんでした。 両者ともにUVC(USB Video Class)として認識されています。 # V4L2が利用可能なデバイスとして認識されているか確認する MATLABでUSB接続WEBカメラを使うためには、V4L2が利用可能なデバイスとして認識されていなければなりません。 V4L2とはLinux上でカメラ等のデバイスからキャプチャを取得するためのAPIのことを指します。 最近のLinuxカーネルではUSBにWEBカメラが接続された時点でカーネルモジュールがドライバとして呼ばれます。 今回で言うとuvcvideoがそうですね。 このドライバはV4L2に対応したドライバですが、V4L2が本当に使えるかどうかはWEBカメラの種類に依存します。 ここで、実際にV4L2が使えるかどうかを確認してみます。 pacmanからv4l-utilsをインストールして、以下のように試してみます。

1
2
3
4
5
6
% v4l2-ctl --list-devices
UVC Camera (046d:0825) (usb-0000:00:14.0-1):
/dev/video0
HP Truevision HD (usb-0000:00:14.0-5.2):
/dev/video1

video1はPC内蔵カメラですので、LogicoolのWEBカメラのみ対応しているようです。 Baffaloは対応していないようです…。 ひとまずLogicoolを使っていきましょう。

MATLABへの準備 #

まずはUVCに対応する必要があるので、以下のURLを参考にしてwebcam用のハードウェアパッケージを入れます。 Install the Webcam Support Package この時、MATLABのインストールディレクトリの権限によっては怒られますのでchmodで対応するなどしましょう。 これでやっと使えると思いきや、この状態ではまだ認識されません。 そこでコンソールからMATLABを呼び出してみると、GStreamerに関するエラーが発生していました。 これはGStreamerのプラグインが存在しないことによるエラーっぽかったので、GStreamer0.10のプラグインを入れてみました。 GStreamer これを入れたあと、カメラが認識されるようになりました。やったね。

テスト #

1
2
3
4
5
clear all
webcamlist
cam = webcam(1)
img = snapshot(cam);
imshow(img)

このようなMATLABコードで上記の画像を取得することが出来ました。 これさえできればMATLAB様で画像処理が出来るね。ありがたや。


Blog comments powered by Disqus