2018年11月3日土曜日

Fedora 28 で QR コードを読み取る

最近ほとんど自宅メインマシンとして使っている ThinkPad 25 の Web カメラで、QR コードを読み取りたいと思ったのですが、なぜか Windows10 環境ではカメラが動かず (まったく映らない) でした。
ThinkPad 25 を使い始めてから約1年、今までに1回も Web カメラを使ったことがなかったし、これはもしかすると初期不良だったのかも?
それで、Windows10 の状態 (ドライバの状態や、新しいドライバがリリースされてないか等) を調べたり、BIOS のメニューでカメラが disable になっていたりしないか?を確認したのですが、わからずでした。Windows 環境でのこの手の調査は疲れるー。

しばらく休んで気を取り直したのち、マルチブートで Fedora 28 が動くようにしてあるので、そういえば試したことがありませんでしたが、Linux で Web カメラって使えるの?と、ネット検索してみると、わりと普通に使えるらしいと知りました。まず、そもそもカメラが初期不良なのかを切り分けるため、camorama というツールをインストールして試してみたところ、ちゃんと撮影可能でした。初期不良 (or 故障) だったら lenovo に連絡とるなど面倒臭いので、まずはよかった!

それなら、Fedora で使える QR コードリーダーがあればよいと思い、chrome 用プラグインの ScanQR というのが Linux でも使えそうだったので試しました。しかし、ScanQR では、どういうわけかノイズだらけで使えませんでした。

このように、マトリックス状態です。なんじゃこりゃ です。
なお、dmesg には次のようなメッセージが出ていました。
[15220.355888] uvcvideo: Failed to query (SET_CUR) UVC control 4 on unit 1: -32 (exp. 4).
uvcvideo というドライバが Web カメラの制御に関係するようだとわかり、ArchLinux のページなどを彷徨ったのですが、とうとう ScanQR を正常動作させられませんでした。

もっと他に QR コードリーダーはないか?と、ネット検索して辿りついたのが、zbar というツールです。
この zbar というパッケージに含まれる zbarcam で読み取れそうでしたが、またしても マトリックス 状態。

zbarcam の help を見てみると、こうなってました。
[root@hoge ~]# zbarcam --help
usage: zbarcam [options] [/dev/video?]

scan and decode bar codes from a video stream

options:
    -h, --help      display this help text
    --version       display version information and exit
    -q, --quiet     disable beep when symbol is decoded
    -v, --verbose   increase debug output level
    --verbose=N     set specific debug output level
    --xml           use XML output format
    --raw           output decoded symbol data without symbology prefix
    --nodisplay     disable video display window
    --prescale=x
                    request alternate video image size from driver
    -S[=], --set [=]
                    set decoder/scanner  to  (or 1)

[root@hoge ~]# ls -l /dev/video*
crw-rw----+ 1 root video 81, 0 11月  3 18:57 /dev/video0
crw-rw----+ 1 root video 81, 1 11月  3 18:57 /dev/video1
crw-rw----+ 1 root video 81, 2 11月  3 18:57 /dev/video2
crw-rw----+ 1 root video 81, 3 11月  3 18:57 /dev/video3
これを見て、ThinkPad 25 には赤外線カメラも付いてるし、マトリックス状態になるのは赤外線カメラが選択されているからでは?と試してみたら、video2 を指定することで正常に動きました!

以上、どなたかのご参考に。

0 件のコメント:

コメントを投稿

人気ブログランキングへ にほんブログ村 IT技術ブログへ