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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Raspbian

Raspbianは、DebianベースのRaspberry Pi用ディストリビューション。ハードウェア浮動小数点演算を有効にすることが可能で、Webブラウズなどの速度を向上できます。

並列処理

複数の計算が同時に実行される手法

Raspberry Pi

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

1240閲覧

camera.start_preview()の画面を2つ同時に表示させたい

yoisho

総合スコア4

Raspbian

Raspbianは、DebianベースのRaspberry Pi用ディストリビューション。ハードウェア浮動小数点演算を有効にすることが可能で、Webブラウズなどの速度を向上できます。

並列処理

複数の計算が同時に実行される手法

Raspberry Pi

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/04/18 01:52

前提・実現したいこと

ラズベリーパイでヘッドマウントディスプレイのようなものを作りたいと考えています。
Picameraのcamera.start_preview()を右目用、左目用の2か所で表示させたいです。

発生している問題・エラーメッセージ

mmal: mmal_vc_port_enable: failed to enable port vc.null_sink:in:0(OPQV): ENOSPC mmal: mmal_port_enable: failed to enable connected port (vc.null_sink:in:0(OPQV))0x2663d50 (ENOSPC) mmal: mmal_connection_enable: output port couldn't be enabled Backend terminated or disconnected.Fatal Python error: Segmentation fault

該当のソースコード

python

1import picamera 2from multiprocessing import Process 3import time 4 5camera = picamera.PiCamera() 6 7def left(): 8 scale = 1.0 9 w = int(640 * scale) 10 h = int(480 * scale) 11 camera.start_preview( 12 fullscreen = False, 13 window = (100, 300, w, h)) 14 sleep(1) 15 16def right(): 17 scale = 1.0 18 w = int(640 * scale) 19 h = int(480 * scale) 20 camera.start_preview( 21 fullscreen = False, 22 window = (500, 300, w, h)) 23 sleep(1) 24 25 26if __name__ == '__main__': 27 p = Process(target=right, args=()) 28 p.start() 29 p.join() 30 left()

試したこと

multiprocessingで右目用画面、左目用画面を並列処理で表示させようとしましたが、上記のようなエラーメッセージが表示されました。
おそらく1つのカメラを2つのプログラムが取り合っているためだと思いますが、この解決方法が分かりません。
ご教授いただければ幸いです。

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

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

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

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

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

guest

回答1

0

自分ではRaspberryPiにはカメラを載せてないので詳細は知りませんし調べてもいませんが、

camera.start_preview()を右目用、左目用の2か所で表示させたいです。

とありますが、preview機能でなければいけないのですか? previewという名前からして、「とりあえず確認できる」というためのものでしかないのでは。

カメラのライブラリを使ってカメラから画像を取得して、その画像を任意のサイズで任意の位置に表示する、ようなことは出来ると思います。(表示はまた別のライブラリかも知れませんが)
もし「previewでなければいけない」ということでなければ取得した1つの画像を2つの場所に表示してやればよいだけの話のように思えるのですが、それではなにか不都合があるのですか?

投稿2020/04/18 11:39

thkana

総合スコア7610

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

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

yoisho

2020/04/19 08:55

回答ありがとうございます。 previewでなければいけないということはありませんが、私がやりたいことは、picameraで撮影した映像をリアルタイムで表示させることです。 そのコマンドがこれしか見つかりませんでしたのでそう書いただけです。参考↓ http://igarashi-systems.com/sample/translation/raspberry-pi/usage/python-camera.html >取得した1つの画像を2つの場所に表示してやればよいだけの話のように思えるのですが、それではなにか不都合があるのですか? 画像ではなくリアルタイムの映像ならば全く問題ありません。お手数をおかけしますが、その方法を教えていただけますでしょうか。
thkana

2020/04/19 10:03

前述しましたように、自分ではRaspberryPiにはカメラも繋いでないし画像処理もやっていないので、参考になりそうなサイトをググって紹介するしかできません(つまり、あなたと状況は一緒...なんですけどね) 'picamera 動画 表示'をキーに検索して、http://lumenbolk.com/?p=1043 がヒットしました。 picameraで取り込んだフレームをOpenCVで表示しています。 これに、現在画像を表示しているところに cv2.imshow('image2',frame) を一行追加してやれば2面の動画が同時に表示されないでしょうか。(私は実験していないので出来るかどうかわかりませんし、うまくいかなかったときの代案もありません) これが出来たなら、さらに'Python OpenCV サイズ変更' 'Python OpenCV ウインドウ位置' でググれば任意のサイズ、位置に画像を表示することができそうな気がします。
yoisho

2020/04/20 13:13 編集

ご協力ありがとうございます。 動作はしましたが、1画面の時点でフレームレートが3FPS程度とかなり遅くなってしまい、使用するのは難しそうです。 (私の環境はraspberry pi zero WHで、camera.start_preview()を使用した場合は20~30FPS程度です。) 因みに私も調べていたところ、私がまさに作りたいものを作成している方がいました。 https://homemadegarbage.com/rpic16 この方もラズパイゼロでのopencv実装を断念してラズパイ3にしたそうです。 とりあえず当初の ・camera.start_preview()の画面を2つ表示させる に加えて、 ・opencvを使用したプログラムの軽量化ができるかどうか を調べていきたいと思います。
thkana

2020/04/20 13:27

コンピュータのパワーを絞り出そうとするのなら、PythonじゃなくてCを使って、OpenCVのような汎用のライブラリじゃなくて専用に作り込むことになりそうな気がしますけど。 まぁ、どこまで出来るか頑張ってみて下さい。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問