Python で USB カメラを使って画像処理を行っています。動作確認済みの機種、購入のポイントをまとめておきます。PC 環境が同様であれば、以下と同等機種で動くと思います。
USB カメラの仕様
・ バッファロー BUFFALO BSWHD06MBK
・ 最大解像度: 1280 x 960
・ 画素数: 120万画素
・ 映像素子: CMOS センサー
・ フォーカス: マニュアルフォーカス (ピント合わせ可能)
・ その他: OS 標準のドライバだけで使用可(USB ポートに刺すだけで使える)
環境
Windows 10、Python 3、Anaconda
動作確認済みのサンプルコード
動作確認済みのサンプルコードを以下の関連リンクで示します。
関連リンク
・ バーコードリーダー 【QRコード対応】
・ 顔認識ソフトウェア 【Python & OpenCV】
Python の OpenCV を用いて USB カメラのライブ画像を取得し、バーコード読み取りをしたところ、うまく動きました。
また、OpenCV の顔画像認識も動いています。
とくに問題なくカメラが動きました。上記のリンクとは別に、Tensorflow を使った機械学習、物体認識も動いています。
Python で USB カメラを使う際のポイント
Python で USB カメラを使って、画像処理、物体認識、バーコード認識などを試しています。
実際に使用した上でのポイントを整理しておきます。
ポイント1: ドライバのインストールが不要なこと
ドライバ不要ですと、Python から OpenCV を使うとき、カメラを USB ポートに刺せばそのまま動きます。
特に、Python で画像処理をする場合、Python、OpenCV、PC の OS など、各ソフトウェアのバージョンの組み合わせにより、動いたり、動かなくなったりといった問題が発生しがちです。
ドライバが必要なカメラの場合、上記の組み合わせに加え、ドライバのバージョンや対応する OS の組み合わせも考慮する必要が生じてきます。
ドライバ不要な製品を使うことで、無駄なトライ&エラーを減らすことができます!
ポイント2: 画素数が足りること
上記の製品は、120 万画素となっています。上記リンクの QR コード程度の読み取りであれば、十分動きます。
ご予算に余裕がある場合は、同一メーカーで画素数の多い上位機種もおすすめです。
ポイント3: ピント(フォーカス)合わせができること
固定フォーカスのカメラを使っていると、画像認識がうまく動かないとき、ハードの原因なのかソフトの原因なのか、切り分けが煩雑です。
画像認識がうまくできない主な要因をざっと列挙すると以下があります。
・ ソフトウェアのバグ
・ カメラのピントが合っていない
・ 手振れになった
・ カメラの撮像範囲から被写体(バーコードなど)が外れた
・ 解像度・画素数が足りない
・ 画像がゆがんだ(被写体(バーコードなど)の傾きなどにより)
当初、バーコードの読み取りのため、ノート PC についているカメラを使用しようとしました。
ところが、バーコードの距離がカメラから遠いと解像度が不足します。もともと一般のデジタルカメラやスマートフォンと比べるとノート PC についているカメラは解像度が少なめのようです。
そこで、解像度の問題を改善するため、被写体をカメラに近づけました。すると、ノート PC のカメラは固定フォーカスなので、今度はピントが外れてしまいます。
加えて、画角が狭いので、手持ちでバーコードを近づけると、被写体が画角からすぐに外れてしまいます。
ピント調整ができないノート PC のカメラでは、位置合わせがとても煩雑です。こういったところで時間を取られるのは無駄ですので、ノート PC のカメラの使用は諦めました。(家電量販店に行きました。)
そこで、USB ケーブルで接続ができるウェブカメラを購入しました。USB ケーブルタイプですと位置合わせは楽です。
加えて、ピント合わせのできるタイプとしました。
画像処理の検討用では、ピント合わせのできるタイプは必須ではないかと思います。特に、印刷密度の高いバーコードの読み取りなどでは、レンズ先端から物体までの距離を 3cm ~ 10cm 程度に合わせたいケースが生じます。
カメラの至近距離に物体を置き、細かなものを解像度を上げて画像処理を行う場合、マニュアル調整ができるタイプをおすすめします。
また、カメラ用三脚やカメラ用のアームがあると微妙な位置調整が可能となります。また、調整後、USBカメラをしっかり固定でき、おすすめです。
まとめ
画像処理のサンプルコード(バーコード認識、顔認識)で動作確認が取れている USB カメラについてまとめました。
私は有名量販店の店頭で買いました。しかし、後から Amazon のほうが安いと知ってややショックです。以下にリンクを貼っておきます。もしもよろしければ参考にしてみてください。カメラを使った画像処理も習得してしまいましょう!
外部リンク
・ バッファロー BUFFALO BSWHD06MBK
バッファロー WEBカメラ 120万画素 1280×720 HD対応 30fps 視野角63° F2.2 マニュアルフォーカス CMOSセンサー ケーブル1.5m ブラック BSWHD06MBK 新品価格 |
※ 最近販売されている USB カメラでは、フォーカス調整が可能な製品が少なくなっているようです。また、200万画素の同製品をアマゾンで探すと、コロナの影響か、価格が上昇しているようです。