質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Q&A

1回答

1956閲覧

【Pi Camera】raspividでの画素数の設定について

Uka

総合スコア28

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

0グッド

0クリップ

投稿2021/09/09 09:36

編集2021/09/10 10:10

前提・実現したいこと

現在、raspivid により動画撮影を行っており、以下の設定値で画素数を決定しています。

raspivid -w 640 -h 480

期待していたのは、視野の範囲が変わることなく、画素数を少なくする(画質としてはあらくなる)ことだったのですが、上記設定では、
使用しているPi Cameraの、最大(w x h)設定値で撮影した時の視野から、640 x 480の画像を中心に残し、その周囲がトリミングされるように、つまりピクセル分解能が変わらず、画額が小さくなった動画が撮影されました。

行いたいのは、
視野の範囲が変わることなく、画素数を少なくする、
なのですが、調べても実現方法が見つかりません。
もし、raspivid、その他方法で実現できる方法があればご教示いただければ助かります。

※状況のイメージ図
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

その他方法で実現できる方法

PythonにOpenCVを入れたらできます

python

1import cv2 2 3# 保存する動画ファイル名 4video_fname = 'video.mp4' 5 6# 保存する動画サイズ 7w = int(640) # 32の倍数 8h = int(480) # 16の倍数 9 10cap = cv2.VideoCapture(0) 11if not cap.isOpened(): 12 raise IOError('Cannot open camera') 13 14cap.set(3, w) 15cap.set(4, h) 16 17fps = int(cap.get(cv2.CAP_PROP_FPS)) 18fourcc = cv2.VideoWriter_fourcc('m','p','4','v') 19video = cv2.VideoWriter(video_fname, fourcc, fps, (w, h)) 20 21# 撮影、ESCキーで撮影終了 22while True: 23 ret, frame = cap.read() 24 cv2.imshow('camera', frame) 25 video.write(frame) 26 c = cv2.waitKey(1) 27 if c == 27: 28 break 29 30cap.release() 31cv2.destroyAllWindows()

投稿2021/09/26 08:58

編集2021/09/26 14:48
jbpb0

総合スコア7653

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Uka

2021/09/26 13:14

>jbpb0さん ご回答ありがとうございます。 OpenCVで実現可能とのことで、質問がございます。 1)raspividの詳しい設定まで記載していませんでしたが、実際には高速撮影を想定しており、現状およそ200fpsを実現できています。調べた限りでは、OpenCVの場合は高速fpsの取り込みが難しいと認識していましたが、可能でしょうか? 2)使用しているパイカメラ Ver.2の解像度は1080p(1920x1080)または720p(1280x720)と公表されており、おそらくどちらかの解像度で実際に撮影され、raspividで設定した640*480の画角でトリミングされているのではないかと考えていますが、ご教示いただいたプログラムの、w = int(640/2), h = int(480/2)とframe = cv2.resize(…)により、全体像をリサイズして640*480の画像を取得できるという理解でいいでしょうか? 素人質問で大変申し訳ございませんが、ご教示いただけますとありがたいです。
jbpb0

2021/09/26 14:55 編集

元の画素数は、指定しない場合は640x480なので、回答はそれを画角を変えずに画素数を縦横それぞれ半分にするコードです 質問には、いくつをいくつにしたいとは書かれてないので、画角を変えずに画素数を減らせればいいと考えて、それだけを実現するコードで回答しました fpsも、質問には何も書かれてませんよね 画角とかfpsとかに必須条件があるのなら、それを後出しするのはおかしいです 他人は、質問に書かれてることしか分かりませんので、質問に書かれてることが実現できたらそれでいいと思って回答を書きます この回答で、 > 行いたいのは、 視野の範囲が変わることなく、画素数を少なくする、 は満たしてると思います 【追記】 > 元の画素数は、指定しない場合は640x480 に付いてですが、画素数を指定しても画角は変わりませんでした 画素数を640x480よりも増やしても減らしても、同じ画角のままで画素数だけ変わりました 指定した画素数に関わらず、画角はアスペクト比が4:3での最大画角のままのようです なので、そこを保存したい画素数に指定すれば、その後でresizeをする必要は無いので、コードをそのように変更しました
Uka

2021/09/26 15:00

詳細にご説明いただきありがとうございます。こちらの希望するとおりのコードであることが理解できました。また、fpsについては、おっしゃるとおり後出しの情報になってしまい申し訳ございませんでした。いただいたコードを試してみるとともに、OpenCVで高fpsの設定ができるかどうか再度調べてみたいと思います。
jbpb0

2021/09/26 15:46 編集

OpenCVでfpsも指定はできるのでやってみたら、fpsの数字を増やすと画角が減っていきました 画角を変えない(=センサーから取り込む画素数を変えない)場合はfpsを増やせないのだと思います それがOpenCVだからなのか、それともカメラやラズパイのハード性能的なリミットなのかは分かりませんが 【追記】 https://interface.cqpub.co.jp/wp-content/uploads/if2009_076.pdf の記事中に、下記の記載がありました 「カメラ・インターフェースの速度は固定なので、動画のフレームレートを上げるためには、画像サイズを小さくする必要があります」 「フルサイズでのセンサのフレーム・レートは20fps程度」 Pi Camera V2のセンサのフルサイズは3280 x 2464です https://www.physical-computing.jp/product/1204 同記事の表に、画素数が640x64と384x64の場合の理論上のフレームレートは788fpsと書かれてます 以上から考えると、垂直方向の画素数とfpsは反比例するという計算をしてるようです 2464/64*20=770 (フルサイズが20fps程度と書かれてるので、本当はたぶんピッタリ20ではないのでしょう) 200fpsとかで画角を変えないというのは、Pi Camera V2ではハードの性能的にムリなのでは?? 画角(センサー上の範囲)を変えずに、垂直方向の画素数を240くらいまで減らして出力できるセンサーが将来出たら、できるかもしれませんが
Uka

2021/09/26 16:08 編集

こちらで確認すべきところ、試していただいたとのことで共有誠にありがとうございます。ということは、OpenCVでも高fpsに設定した場合は、raspividと同様の現象が起こるということですね。他のカメラではOpenCVで高速処理できるタイプもあるようなので、パイカメラの性能によるものなのかもしれないですね。 追記コメントについて:いろいろ調べていただきありがとうございます。前回たてた質問スレッドにおいて、シャッター方法についての回答がありました。パイカメラはローリングシャッターで上から横方向に順番に画素をスキャンしていくようなので、垂直方向に対してはfpsと反比例する、ということなのかもしれませんね。パイカメラはコスパがよく、なんとか解決できればと思っていましたが、現時点ではちょっと難しそうですね(ハイスペックのカメラも検討しようと思います)丁寧に教えていただき本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問