前回はものを集めてSDカードにRaspberry Pi OSを書き込み、リモートデスクトップまでやりました。
今回はカメラを繋いで起動までしてみます(^^)
今回からはmacよりリモートデスクトップして作業します(余談あり)
WEBカメラの認識
まずはじめに、カメラ(USBデバイス)を認識しているかチェックします
ラズパイが起動した状態で、空いているUSBポートに差し込んでいます
使っているWEBカメラはこちら
だいぶ古いですねw
最大解像度 2048 × 1536 なので 4:3 ですね
ラズパイでターミナルを開き、以下を入力してUSBデバイスをチェックします
lsusb
一番上に Elecom Co., Ltd とあるので認識してるっぽい おk
使っているミニディスプレイはこちら
制御にはOpenCVを使う
ググってみると、webカメラの制御にはOpenCVを使っている事例が多かったので真似します
OpenCVはPythonで書くので、まずはラズパイに入っているPythonのバージョンを確認します
Python2と3が入っていますが、Python3を使います
ターミナルで以下を入力してPython3のバージョン確認します
python3 -VV
Python 3.7.3 でした
忘れてましたが、パッケージをインストールする前に以下を脳死で実行してラズパイを最新にします
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo rpi-update
sudo reboot
OpenCVをインストールする
こちらを参考にさせていただきました(^^)
非公式のビルド済パッケージ(opencv-python)をインストールします
上から順に実行します
sudo pip install --upgrade pip
sudo apt install libavutil56 libcairo-gobject2 libgtk-3-0 libqtgui4 libpango-1.0-0 libqtcore4 libavcodec58 libcairo2 libswscale5 libtiff5 libqt4-test libatk1.0-0 libavformat58 libgdk-pixbuf2.0-0 libilmbase23 libjasper1 libopenexr23 libpangocairo-1.0-0 libwebp6
sudo pip3 install opencv-python
このときには opencv-python-4.5.3.56 が入りました
しかし参考にもあるように、私の場合もimportできませんでした
そこでこちらを参考にさせていただき、バージョンを下げ、ライブラリを追加でインストールしたらimportできました
バージョンも合わせてあります
sudo pip3 install opencv-python==4.5.1.48
sudo apt-get install libatlas-base-dev
今回みたいにOpenCVの別のバージョンをインストールし直したいときは、続けてインストールして大丈夫です
先にインストールされたバージョンはアンインストールされます
WEBカメラを起動する
それではWEBカメラをテストするためのpythonファイルを用意します
エディタはラズパイにもともと入っている Thonny Python IDE を使いました
IDEなので、すぐに実行できて便利(^^)
ラズパイマーク ー プログラミング ー Thonny Python IDE で開きます
サンプルプログラムは以下を拝借させていただきました
これを.pyの拡張子で保存します
私はopencv-test.pyとしてデスクトップに保存しました
import cv2
# VideoCapture オブジェクトを取得します
capture = cv2.VideoCapture(0)
while(True):
ret, frame = capture.read()
# resize the window
windowsize = (800, 600)
frame = cv2.resize(frame, windowsize)
cv2.imshow('title',frame)
if cv2.waitKey(1) & 0xFF == ord('q'): # control + qが押されたら
cv2.imwrite('test.tif', frame) # save
break
capture.release()
cv2.destroyAllWindows()
そのままではカメラが起動しなかったのですが、capture = cv2.VideoCapture(0)の引数を0としたら起動しました
カメラはUSB接続のWEBカメラのみです
起動中はwhile中で絶えずcaptureしているため、動画となります
cv2.imwrite('test.tif', frame) # save
で、control + qでwhileから抜けてカメラウィンドを閉じる際にtest.tifとして画像を保存します(サンプルプログラムから追加した部分です)
Thonnyだと.pyファイルの保存された場所でコードを実行するため同じ場所に保存されます。ここでは.pyファイルはデスクトップにあるので、画像もデスクトップに保存されます。
とりあえず動作してよかった(^^)
10年前のWEBカメラにしては画質はまずまずですな!
余談 iPhoneテザリングだとipアドレスがわからん
今回はiPhoneをテザリング親機にしてmacとラズパイを繋いでいます
iPhoneは接続デバイスのipアドレスを確認する方法が無いので困りましたが、ラズパイにミニディスプレイを付けているので、USBマウスを操作してラズパイ上のVNCアプリを開いてラズパイに割り振られているipアドレスを確認しました(前回はAndroidを親機にしていました(ipアドレスとmacアドレスが表示されて便利))
ですので、最初だけディスプレイ、キーボード、マウスが必要です
そもそも、iPhoneに接続するためにラズパイに直接キーボードからパスワードを入力する必要があるんですけどね\(^o^)/
あとはmacよりリモートデスクトップして作業します
ちなみに、Fingアプリでは確認できず(Wi-Fiに接続していないと無理ぽ)
ipアドレスは172.20.10.2 でした
それか、macとiPhoneを繋いでいるのなら、以下の方法でターミナルからも確認できました