リモートデスクトップでラズパイに接続してカメラの映像を見た時の「カクカク」をなんとかしたい!
ということで、今回はRaspberry Piのカメラモジュールを使用した際の、フレームレートと解像度の確認方法について書きたいと思います。
Raspberry Pi(ラズベリーパイ)とは
Raspberry Pi(ラズベリーパイ)はイギリスのラズベリーパイ財団が教育用に開発したボードコンピュータです。
最新のRaspberry Pi 4では、ARMアーキテクチャを採用したBroadcom製の高性能SoC BCM2711を搭載しており、1.5GHzで動作するARM Cortex-A72が4コアとマイコンボードの中では非常に高速な処理能力を持っています。また、ユーザーがアクセス可能な40ピンのGPIOも搭載しており、外部ハードウェアを制御することが可能です。
詳細なスペック等は以下の記事で解説していますので、あわせてご覧ください。
Raspberry Pi カメラモジュールの映像がカクカクする
先日、Raspberry Piからカメラモジュールを通して動画を表示する方法を記事にしました。
無事にRaspberry Piのデスクトップ上に撮った映像を表示することができました。
しかし、映像がカクカクしていて、フレームレートが1桁しか出ていないように見えます。
考えられる問題点
Twitterのフォロワー様よりアドバイスを頂き、以下の問題点を挙げてみました。
・解像度が高すぎる
・リモートデスクトップの遅延
・GPUメモリの不足
3点を改善して高速化できないかと考えています。
とりあえず、今回は画像として取り込んだ際の解像度と、そもそもカメラモジュールの性能としてどれくらいのフレームレートが出ているのかを確認したいと思います。
解像度とフレームレートを確認するソースコード
OpenCVのライブラリを使用すると、解像度とフレームレートは簡単に確認ができるようです。
以下のようなソースコードを作成してみました。
import cv2
#VideoCaptureオブジェクト取得
cap = cv2.VideoCapture(-1)
#カメラの情報を取得
fps = int(cap.get(cv2.CAP_PROP_FPS)) # フレームレートを取得
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) # X軸解像度を取得
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) # Y軸解像度を取得
#情報を出力
print("FPS=", fps)
print("X Width = ", frame_width)
print("Y Width = ", frame_height)
#カメラデバイスクローズ
cap.release()
#ウィンドウクローズ
cv2.destroyAllWindows()
7行目:
カメラモジュールのフレームレートを取得します。
8行目:
画像のX軸方向のサイズを取得します。
9行目:
画像のY軸方向のサイズを取得します。
実行結果
先ほどのプログラムを実行した結果は以下の通りです。
FPS= 30
X Width = 640
Y Width = 480
フレームレートと解像度取得できました。
取得結果をみるとカメラ自体は30fps出ているので問題ありませんし、解像度も高すぎるというわけでもないようです。(さらに高速化したいのであれば、解像度を必要ギリギリまで下げるのも良いかと思います)
\ Pythonを自宅で好きな時に学べる! /
まとめ
この結果から、Raspberry Piのリモートデスクトップの通信遅延か、もしくはデスクトップ自体が重い可能性が高いのではと思われます。
次回はGPUに割り当てられるメモリ容量を大きくしてテストしてみたいと思います。
また、ラズベリーパイの画像認識について学びたい方にはUdemyの以下の講座がおすすめです。
また、以下の記事で効率的にPythonのプログラミングスキルを学べるプログラミングスクールの選び方について解説しています。最近ではほとんどのスクールがオンラインで授業を受けられるようになり、仕事をしながらでも自宅で自分のペースで学習できるようになりました。
スキルアップや副業にぜひ活用してみてください。
スクールではなく、自分でPythonを習得したい方には、いつでもどこでも学べる動画学習プラットフォームのUdemyがおすすめです。
講座単位で購入できるため、スクールに比べ非常に安価(セール時1200円程度~)に学ぶことができます。私も受講しているおすすめの講座を以下の記事でまとめていますので、ぜひ参考にしてみてください。
それでは、また次の記事でお会いしましょう。
コメント