こんにちは
raspberrypi で usb webカメラから写真を取得するのにいろいろてこづったので備忘録を書きます。
raspberrypi 4です。
https://qiita.com/suo-takefumi/items/355479f46bf3957ffd8f
序盤は上記記事のように
lsusbコマンドでWebカメラをUSB接続したことを認識できるか確認して、
fswebcam image.jpg
コマンドで写真取得まではすんなりいきました。
次にsudo apt-getからopencvをインストールして、
cc = cv2.VideoCapture(0)
を実行するとエラー
WARN:0@16.618] global ./modules/videoio/src/cap_gstreamer.cpp (1405) open OpenCV | GStreamer warning: Cannot query video position: status=0, value=-1, duration=-1
こうなります。
どうやらopencvを依存関係を含めてインストールしないといけないようです。
ここまでは他のブログでも生じていたので、ビルドに必要な依存関係をインストールしようと以下のコードを入れると再度エラー。少し嫌になってきます。
動かなかったコード: sudo apt install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libjpeg-dev libpng-dev libtiff-dev gfortran openexr libatlas-base-dev python3-dev python3-numpy libtbb2 libtbb-dev libdc1394-22-dev
最終的にバージョンの変更などがあり、私の環境では以下のコードで依存関係をインストールできました。
sudo apt install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libjpeg-dev libpng-dev libtiff-dev gfortran openexr libatlas-base-dev python3-dev python3-numpy libtbb-dev libdc1394-dev
次にopencvをインストールするのですが、raspberrypiの環境ではサードパーティ(pip)でのインストールができなかったので、
仮想環境でpipを使用する必要がありました。
python3 -m venv myenv
source myenv/bin/activate
pip install opencv-python
これで
cc = cv2.VideoCapture(0)
が動くようになりました。
ちなみに仮想環境のactivateは
source myenv/bin/activate
deactivateは
deactivate
で出来ました。
---蛇足---
arucoマーカー認識というopen cvでのマーカー認識機能を使いたかったのでopencv_contribをインストールしました。
まず、opencvのバージョンを確認します。
import cv2
cv2.__version__
>>4.9.0
従って、
pip3 install opencv-contrib-python==4.9.0
でインストールを試みます。
すると
ERROR: Could not find a version that satisfies the requirement opencv-contrib-python==4.9.0 (from versions: 3.4.11.45, 3.4.13.47, 3.4.14.51, 3.4.15.55, 3.4.16.59, 3.4.17.61, 3.4.17.63, 3.4.18.65, 4.4.0.46, 4.5.1.48, 4.5.2.52, 4.5.3.56, 4.5.4.58, 4.5.4.60, 4.5.5.62, 4.5.5.64, 4.6.0.66, 4.7.0.68, 4.7.0.72, 4.8.0.74, 4.8.0.76, 4.8.1.78, 4.9.0.80)
ERROR: No matching distribution found for opencv-contrib-python==4.9.0
というエラーが返ってきます。
どうやら、4.9.0.80としないといけないみたいなので
pip3 install opencv-contrib-python==4.9.0.80でインストールできます。