ラズパイ usbカメラ python 5

|__ Port 3: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M Raspberry Pi Advent Calendar 2019の11日目の記事です。前日はtera1707さんのRaspberryPi3にI2Cサーマルカメラ(サーモグラフィ)をつなげて温度を画像化するでした。 興味深いのでいつかやってみたいと思います。 さて。あるプロジェクトで、Raspberry Pi(以下ラズパイ)から複数台のUSBカメラで静止画 … |__ Port 2: Dev 3, If 2, Class=Audio, Driver=snd-usb-audio, 480M /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M ラズベリーパイとカメラの使い方をまとめてみました。初心者の方でも簡単に撮影できますPythonとコマンドのどちらでも写真・動画撮影が対応できる旨を紹介して、最後には画像認識まで実施してみます。ラズパイでカメラの使い方!Pythonとコマンド

非常に初歩的な話です…USBカメラではなくて、ラズパイ専用カメラでも Raspberry Piと純正カメラモジュールで監視カメラを作る、おそらく正しい方法 jessie版 (motion + v4l2ドライバ) に説明されているように bcm2835-v4l2.ko カーネルモジュールを読み込んでおけば以下の手順でできるはずですが、ラズパイ専用カメラは現物持ってないので確認していません。よく考えたらこの記事はラズパイに依存していませんでした…(タイトル更新しますた)。UbuntuかDebianなら下記の話は当てはまります。, lsusb -t の出力に Class=Video, Driver=uvcvideo があることを確認する, 以下のプログラムを python3 capture.py として実行するとカメラからの映像が表示されます。なおUbuntu Mate ラズベリーパイだと、/dev/video0 にアクセスできないパーミッションになっているから sudo chmod a+rw /dev/video0 とかして下さい。, 上記の小技を全部いれた例は以下です。しかし、ラズパイにUSB 2.0接続のElecom製ウェブカメラ をラズパイ4BのUSB 3ポートに接続すると、次の例ではキャプチャが25fps程度で出来るが画面更新が10fps以下でしかできなかった。並列処理 を行い画面更新も25fpsで行う例を最後に示す。また、記事著者のウェブカメラではUSB 2.0接続なのでキャプチャ解像度を640x480よりも大きくすると、フレームレートが結構落ちる。キャプチャ自体のフレームレートを高くするためには OpenCVのカメラ読み込みを高速化し、遅延時間も短くする に説明されるように capture.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('Y', 'U', 'Y', 'V')) の行を変えて、カメラから取り込むデータを圧縮してUSBケーブルに流すようにするとよい。記事著者は画質劣化を嫌ったので敢えて圧縮を行っていない。, 直前の例ではキャプチャが25fpsでできるのに、画面表示は12fps程度になってしまっていた。画面表示更新とキャプチャを並列に行うと両方を25fps程度で動作させることができる。Python 3のmultiprocessingでプロセス間で大量のデータを受け渡しつつnumpyで処理するに基づいて、並列処理を行う例を次に示す. ラズベリーパイとカメラの使い方をまとめてみました。初心者の方でも簡単に撮影できます, Pythonとコマンドのどちらでも写真・動画撮影が対応できる旨を紹介して、最後には画像認識まで実施してみます。, またラズパイならばカメラをPython・コマンドから制御できるので自由にカスタマイズできるのも非常に便利です。, ターミナルを開いて、下記コマンドを入力することで「test.jpg」という画像が保存されます, デフォルト設定のため「2592×1944」ピクセルの500万画素で写真が保存されます。, 初期状態のターミナルで実行した場合は「/home/pi」の箇所に写真が保存されているはずです。, 写真の解像度を変更したい場合は「-w」「-h」の後に数字を入れることで任意に変更できます。, 下記は「640×480」の解像度で「test.jpg」という名前で写真が保存されます, 「picamera」のライブラリを使って対応します。(あと「time」のライブラリも使用します), Python含めてデフォルトでラズパイに入っていますので特にインストール作業は必要ありません。, 上記Pythonを動かすことで「640×480」の解像度で「test.jpg」という名前で写真が保存されます。, ターミナルを開いて、下記コマンドを入力することで5秒間の「test.h264」という動画が保存されます, 今回紹介したラズパイの動画撮影のコマンドではH.264というフォーマットで保存します, H.264だと(デフォルトの)WindowsのPCに持って行った場合、動画ファイルを再生ができません。, しかしラズパイならば簡単に変換可能です。下記コマンドで「gpac」パッケージをインストールします, 「gpac」をインストール後は「MP4Box」という下記コマンドでh.264からmp4に変換が可能です。, 上記プログラムを動かすことで「640×480」の解像度で10秒間動画撮影され、「test.h264」という名前で動画が保存されます。, これからは「応用編」ということでラズパイとカメラで(リアルタイムの)画像認識を行っていきます。, 筆者はエッジAIデバイスのCoral USB Acceleratorで(楽して)画像認識する方法を紹介します。, 今回は「リアルタイムで物を画像認識」させますが、他の画像認識の応用例も紹介しときます。, 今回はエッジAIデバイスのUSBアクセラレータを使いますのでライブラリ・サンプルプログラムを用意していきます, 正式な手順はUSBアクセラレータのCoral公式ページをご覧ください(リンク先はこちらから), Coral USB Acceleratorのインストール方法・基本的な使い方に関しては下記記事を参考にお願いします。, 下記コマンドを実行してEdge TPUのAPIのサンプルをダウンロード・インストールしていきます, インストールが終われば「/usr/share/edgetpu/examples/」の箇所にサンプルプログラムが入っています。, CoralのHPに行って今回の画像認識に必要なモデルとラベルをダウンロードします。(リンク先はこちらから), 今回は「Image classification」の「MobileNet V2 (ImageNet)」のモデルとラベルを入手します。, ダウンロードしたら「/usr/share/edgetpu/examples/」の直下のフォルダの「models」に入れておきます。, 画像認識を行うプログラムは既にメーカCoralから用意されていますので、コマンドで実行するだけです。, 今回はPythonで書かれている「classify_capture.py」を使ってリアルタイムの画像認識を行います。, ただ結果の動画を貼るだけでは面白くないので、最新のラズパイ4(USB3.0)とラズパイ3(USB2.0)で比較しました。, OS:Raspbian Buster with desktop and recommended software(September 2019), 接続デバイス:Google Coral Edge TPU USB Accelerator, 結果は「ラズパイ4(USB3.0)…推論時間_5ms程度」「ラズパイ3(USB2.0)…推論時間_13ms程度」でした。, もともとEdgeTPUで高速に画像認識していましたが、ラズパイ4で更に2倍上高速化しています, 基本・応用例まで紹介しましたが、これからラズパイ+カメラを始める人のために初期設定を説明させていただきます。, 黒いコネクタ側を少し持ち上げてから銀色の端子が見える方を(Micro)HDMI側にして差し込めば完成です。, ケーブルを差し込んだら、黒いコネクタは押し込んでおきます。これで取り付け完了です。, 但し変更といっても簡単です。「設定」⇒「Raspberry Piの設定」を選択します。, ラズベリーパイ(raspberry pi)にカメラは写真・動画撮影だけでなく、「画像認識」含めて色々なことに応用可能です。, 次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。, sudo raspistill -w 640 -h 480 -o test.jpg, sudo raspivid -w 640 -h 480 -t 5000 -o test.h264. PoE HATの給電がラズパイの消費電力・発熱で問題ないか含めて確認しています。 ... Raspberry Pi PoE HATでラズベリーパイ4に給電してみました。 USBシリアル変換ケーブルのICを調べて、最大のボーレートまで試しています。 |__ Port 4: Dev 5, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M, #print("Capture FPS = ", 1.0 / (time.time() - capture_start_time)), Raspberry Piと純正カメラモジュールで監視カメラを作る、おそらく正しい方法 jessie版 (motion + v4l2ドライバ), https://github.com/opencv/opencv/blob/master/samples/python/video_v4l2.py, Python 3のmultiprocessingでプロセス間で大量のデータを受け渡しつつnumpyで処理する, キャプチャ解像度やフレームレート、取り込みデータ形式は下記のように行う。これらの組み合わせにカメラが対応していないとエラーが起きることがあり、どの組み合わせに対応しているかは, キャプチャした後のプログラムの処理に時間が掛かったときにコマ落ちしないためのバッファがあるが、バッファが大きすぎると遅延(コマ遅れ)が気になることもある。その場合は, OpenCV 4以降ではキャプチャを直接V4L2で行われず GStreamer を経由されることがある。そうすると上記のテクニックの一部は使えなくなるが、V4L2から直接キャプチャした場合は、例えば以下のようにする, you can read useful information later efficiently. シリアル通信のボーレートの設定で通信速度(bps)がどのように変化するか紹介します。. ラズパイには公式カメラモジュールとUSBカメラをつけることができて、複数台のカメラを搭載することができます。ただし、全部をフルパワー全開で利用するには、電源的にもCPU的にもディスクアクセス的にも厳しいものがあったりするので、用途に応じて切り替えをしながら使う必要があります。きちんと使うためには、いろいろ調べとかないとなぁ、と思ったのがきっかけです。, ということで、手元にUSBカメラが4台あったので、それぞれ1台ずつラズパイにつけてみました。それについて簡単に調べたことを記録しておきます。UVC(USB video device classまたはUSB video class)対応のカメラであれば認識して使えるようです。, まず、定番の「LOGICOOL ウェブカム HD画質 120万画素 C270 」です。これは優秀でラズパイへつけると普通に使えます。値段も安くていいですよね。, USBデバイスが認識されているかを調べるにはlsusbを使います。C270の場合は、下記のようにすればわかります。, ここではC270というキーワードがわかっているのでgrepを使ってますが、キーワードがわからないデバイスの場合は、デバイスをつける前後でlsusbコマンドを実行して追加されたものが何かで判断します。, それで、USBカメラのデバイスが認識されていると、/dev/video0が使えるようになります。複数台のUSBカメラをつけると、/dev/video1、/dev/video2と増えていきます。, 昔のラズパイの場合はバスパワーでUSBカメラを使おうとすると電力不足になることがありました。Raspberry Pi 3だと1台ぐらいなら大丈夫なようですが、複数台つける場合は動作が不安定になることもありえるので、セルフパワーのUSB HUBを用意するなどして対応が必要なこともあるという認識はしておいたほうが良いでしょう。, カメラが対応している解像度については、lsusbの「-v」オプションで表示できます。同時に「-s」オプションで「Bus:Device」の値を指定する必要があります。情報はたくさん出てくるので、grepでWidthで絞って、その前後1行を表示すると見やすくなります。整理すると、さっきのC270の情報から「Bus」が「001」で「Device」が「005」とわかるので、C270の対応する解像度を取得する実際のコマンドは下記になります。, 画像取得用コマンドとして有名なのはfswebcamで、追加インストールが必要です。使うには、保存するファイル名を指定します。コマンドラインで実行できるので、モニタにつないでないラズパイでは重宝します。, カメラによっては初期処理に時間がかかる場合があり、撮影開始まで遅延させたほうが良い場合があります。その場合は「-D」を使います。, カメラによっては最初に何回か撮影をすることで各種パラメータが調整されるものがあり、その場合は「-S」を使って調整をします。, luvcviewを使うとカメラのプレビューを見ることができます。コマンドラインでUSBカメラの情報を取得できて便利なので、uvccapture と uvcdynctrlも一緒にインストールしておくと良いでしょう。uvcdynctrlで設定を保存したり読み込んだりできますが、その設定ファイルは後で紹介するguvcviewの設定ファイルと互換性があるようです。, uvcdynctrlのオプションについて、ヘルプは「-h」、デバイス一覧表示が「-l」です。利用可能なコントロール一覧は「-d」でデバイスを指定して「-c」、詳細を知りたいなら「-v」を追加とします。利用可能なフォーマット一覧は「-f」を指定します。, 個別に値を取得したり、設定するには、それぞれ「-g」、「-s」を使います。例えば「$ uvcdynctrl -d video0 -c 」でBrightnessがコントロールできるなら、下記のように使います。例では現在値が128のところを40に設定しなおしてます。, uvccaptureを使うと写真撮影ができて、snap.jpgに保存できます。「-o」でファイル名指定もできます。空白をいれずにファイル名を指定します。「-v」は詳細情報の出力です。エラーが出たときの確認に使えます。カメラによっては動作しませんでした。, luvcviewだと写真撮影や動画撮影が大変なので、そういうことをしたい場合は、GUI版の guvcview を使います。インストールをするとメニューの「サウンドとビデオ」-「guvcview」から使えるようになります。, 起動するとカメラの自動調整をしてくれるようです。このあと紹介するDigio2やELECOM UCAM-C0220FBNWHも写真撮影に使えました。, 設定値はメニューの「Settings」-「Save」で保存できます。保存した設定値は「Settings」-「Load」で利用できます。, v4l-utilsは、Webカメラ用のユーティリティを提供するもので、libv4lで利用可能な独自のフォーマットを処理し、V4Lデバイスをテストするためのツールが含まれているようです。最初からインストールされているようですが、ない場合は次のようにしてインストールできます。, これに含まれるv4l2-ctlコマンドを実行すると、利用可能なデバイスの一覧を表示することができます。, 明るさ、ズーム、フォーカスなどは、v4l2-ctlで調整できます。すべてのコントロールとそのメニューを表示するには、「-L」を使います。, 「Digio2 UVC対応リアル130万画素超小型スティックPCカメラ ホワイト MCM-14W 」もつけてみました。Amazonだと結構な値段がしますが、延長ケーブルつきでラズパイにもコンパクトにつけることができるので、人気があるのでしょうか。, fswebcamコマンドだと色がおかしくなります。オプションの「-S」を使って撮影すると良くなりました。, guvcviewで見ると調整がされて使えました。guvcviewの「Settings」-「Save Profile」で保存できる設定ファイルは下記のようになりました。ファイル名はdigio2.gpflで保存してみました。, 「Settings」-「Hardware Default」とすると、輝度が -16 になったり、色相が -45 になったり、ガンマが 200 になったりと、いろいろとおかしな値になります。ですから、最初にguvcviewを起動して自動調整で良い感じになっていたら「Settings」-「Save Profile」して設定を保存しておき、問題が起きたら「Settings」-「Load Profile」で設定をロードしなおすのが良いようです。, コマンドから使う場合のカメラ設定については、uvcdynctrlを使えばいいかと思って、設定をしてみたりしたのですが、uvccaptureもfswebcamもuvcdynctrlで設定した値を使ってくれないようでうまく写真撮影ができませんでした。, GUIアプリを使える環境なら、guvcviewを使えばいいのですが、fswebcamコマンドなどを使いたい場合は「-S」で調整して使うことになりそうです。motionやMJPG Streamerでどうなるかまでは見てませんが、動画系だと自動調整がうまく入って大丈夫なのだと思います。, 値の変更はuvcdynctrlでもいいと思いますが、v4l2-ctlでもできます。, 「エレコム WEBカメラ 200万画素 マイク内蔵 MAC対応 ホワイト UCAM-C0220FBNWH 」もつけてみました。, こちらもfswebcamで写真を撮影すると緑色がかってしまいます。オプションの「-S」を使って撮影すると良くなりました。, guvcviewの「Settings」-「Save Profile」で保存できる設定ファイルは下記のようになりました。ファイル名はelecom_ucam-c0220fbnwh.gpflで保存してみました。, v4l2-ctlコマンドでの結果も記載しておきます。UCAM-C0220Fと表示されていました。, かなり昔に購入したWebカメラで640×480, 320×240に対応しているもので、lsusbコマンドではZC0302 Webcamと認識しています。15cm ほどの距離でもピンぼけしてしまうのと、反応が遅く、1fpsしかないようなので、使いみちがありません。とはいえ、認識して使えたので記録としていれておきます。, python-opencvを使うとUSBカメラをプログラムから使えるようになります。pygameでもいけますが、オプションの指定がpygame.camera.Camera.set_controls(hflip = bool, vflip = bool, brightness)しかなかったので、OpenCVの方が細かく指定できていいかと思い調べました。python-opencvはpythonコマンド用なので、python3では使えません。python3コマンドで使いたい場合は別途対応したopencvをインストールする必要があります。, プログラム例 snap.py は下記です。ただ、これだと色調がおかしいカメラだとおかしな色で撮影されます。, 自動で色調などを調整するカメラの場合は、時間をおいて調整が済んでから撮影をすれば良いかもしれないということで、time.sleep(3)としたものが下記です。Digio2のカメラでは良くなりました。Elecomのカメラではそれほど良くはなりませんでした。, ただ3秒待つのでなく、撮影を30回すれば補正されるかもしれないということで、そういう処理をReadyの直後にいれたのが下記です。Digio2、Elecomのカメラ両方で良くなりました。, opencvからカメラの設定をするようにしてみましたが、Digio2ではきちんと動きませんでした。整数値をそのまま渡すとうまくいかないので、妙な数式にしてありますが、いくつか値をいれてみて、v4l2-ctl -L で確認をして調整をしています。いまのところは役に立たないのですが、記録として残しておきます。, いろいろ調べていたら、uv4lというのもあるのですね。面白そうです。インストール方法は「Installation for ARM (Raspberry Pi) – (advanced) Projects」にあります。下記のようにしてインストールしてみました。ただ、USBカメラはうまく動作しなくて、いろいろやっていたら環境がおかしくなってUSBカメラの/dev/video0が作られなくなってしまいました。ラズパイの公式カメラはすんなりと動きました。ということで、メモという前提で読んでもらえばと思います。, これで ラズパイのIPアドレスが192.168.0.100だとしたら、http://192.168.0.100:8080/ へアクセスするとラズパイの公式カメラモジュールが動きました。, USBカメラを使う場合は、追加作業が必要なのですが、書いてある通りにしても動きませんでした。uv4l-uvcが必要なのですが、ほかもあったほうがいいようなのでインストールします。, /etc/uv4l/uv4l-uvc.confのdevice-idにさっきのIDを指定します。それから、uv4lコマンドで実行。device-idをオプションで指定してますが、これがないとエラーになるので指定してます。警告などがでてますが、これでuv4lが起動します。, ラズパイのIPアドレスが192.168.0.100だとしたら、http://192.168.0.100:8090/ へアクセスすると画面が表示されます。uvcの場合は8090なので注意してください。ただ、手元では写真撮影も動画配信もうまく動かなかったです。コントロールパネルもカメラを認識していないような感じ。「Device detected!」とか「Registering device node /dev/video0」と起動時に表示されているのに不思議です。, 自動起動をしたいなら、uv4l-raspicam-extrasをインストール。WebRTCを使いたいならuv4l-webrtcをインストールすれば良いそうです。, Digio2 UVC対応リアル130万画素超小型スティックPCカメラ ホワイト MCM-14W, エレコム WEBカメラ 200万画素 マイク内蔵 MAC対応 ホワイト UCAM-C0220FBNWH, Installation for ARM (Raspberry Pi) – (advanced) Projects, USBカメラをラズパイで使いこなしたいなら日経Linux 2020年7月号を読もう!, Ubuntu 18.0.4 for Raspberry Pi B4 で Bluetooth を使いたい, Raspberry Pi でVisual Studio Codeを使いたいなら、日経Linux2020年3月号を読もう!, ラズパイで使う電子回路の配線図・回路図の描き方を知りたいならラズパイマガジン 2020年夏号を読もう!, ラズパイで小型情報端末の作り方を知りたいならラズパイマガジン 2020年4月号を読もう!, ラズパイでデータの記録とグラフ生成を自動化したいなら日経Linux 2020年9月号を読もう!, これから読みたい書籍「PHPマイクロフレームワーク Slim Webアプリケーション開発」, ラズパイをBluetooth経由で操作できるようににしたいなら、ラズパイマガジン 2020年10月号を読もう!, 土日で楽しむゲームプログラミング入門にPygame Zero/Pygameのサンプルが掲載されていました, Vim と Visual Studio Code の特集だったので Software Design 2020年8月号を購入, TypeScriptの記事が掲載されていたので WEB+DB PRESS Vol.117 を購入.

Fifa 20 Utとは 19, 三協アルミ 勝手口 フィアンズ 6, 直流電動機 波巻 重ね巻 8, 天気の子 クライマックス シーン 6, Alfi ポット 洗い方 4, Javascript 文字 の高さ 5, 外 構 工事 成功 8, 補聴器 子供 ブログ 8, Pure Abstraction 意味 5, Pso2 Na とは 5, 今日から俺は 柳楽優弥 3話 5, Matebook タッチパネル 反応しない 8, 男の子 髪型 ワックスなし 4, 京大病院 産婦人科 コロナ 4, Vb Net 練習問題 12, Kindle Paperwhite 壁紙 変更 7, キッズ ボレロ 編み図 4, Alternate Camera Skyrim 5, 英語 授業 ゲーム 中学 5, Sql Or 遅い 5, Uad プラグ イン ノイズ 7, タロット 戦車 最終結果 4, Gta5 2倍イベント 最新 45, 復興 税 還付 9, Qck+ Limited 湿気 7, 盛岡 マスク 売ってる 29, レキシ ファン 呼び名 19, ハソクジン 誕生日 3月4日 10, Pysimplegui Python2 7 13, Fam アフィリエイト 使い方 9, 彼岸花 イラスト 線画 5, ネコポス 投函完了 届かない 7, Wrx S4 Cvt油温 7, 火災保険 見舞金 相場 7, Oracle 表領域 確認 テーブル 4, Punpee Modern Times Zip 9, Jest Puppeteer Parallel 6, I'm Not Really Sure 意味 9, プラチナ エレキブル 技構成 6, 京セラ コピー機 評判 4, Iphone の音をpcで再生 Windows10 14, 旭 の つく 力士 7, Exo レイ 年収 26, Xperia 5 画面サイズ 変更 7, マイクラ おしゃれな家 設計図 4, 松本まりか 髪 色 5, 中華モンキー オイルクーラー 取り付け 9, Appleid 法人 生年 月 日 5, 新生児 陰部 黒い 9, タイヤ サイドウォール 膨らみ 4, マイクラ 弓 分解 35, 音量調整 ソフト Mp4 5, V30 テレビ 出力 14, 韓国 アイドル キムチ 20, プリウス 30 ハンドリング 4, ビーチサンダル 痛い 対策 100均 21, 2g 訓練所 攻略 4, 三浦 大 知 ライブ 初めて 5, Access クエリ 結合 あいまい 6, Aviutl 音声 二重 32, M1 中古 Korg 4, 数学 公式 難しい 5, Iphone の音をpcで再生 Windows10 14, いいずな書店 現代文 答え 17, Pso2 Na とは 5, Feil Plus ドライヤー 口コミ 4, 離乳食 豆腐 ブログ 4, 志麻さん 牛 丼 9, 忌野清志郎 自宅 住所 7, さつまいも 天ぷら カロリー 6, ゆうパケット やり方 郵便局 4, ヒプノシスマイク 歌詞 ふりがな付き 9, ブロック塀 表札 交換 13, 油温計 取り付け 工賃 バイク 11, Nhk 片山 美紀 画像 22, トヨタ電子 パーツカタログ インストール Windows10 11, 高校生 大人 顔変わる 32, Ryzen 3 3100 性能 8,

/** */