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

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

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

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

Python

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

Q&A

解決済

1回答

1785閲覧

ラズパイで複数のカメラを使えるようにしたいが、エラーを吐く、インデックスの見方がわからない。

Uowa

総合スコア15

Raspberry Pi

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

Python

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

0グッド

0クリップ

投稿2023/04/11 03:37

実現したいこと

複数カメラを使えるようにしたいのでインデックスを取得して、エラーを吐かないコードを書きたい。

前提

python初心者です。
繋いでるカメラは2つです。

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

>>> %Run wcamera.py [ WARN:0] global /tmp/pip-wheel-a8gfdc_n/opencv-python_13563f08137a4b20bc4dfee05bcbf854/opencv/modules/videoio/src/cap_v4l.cpp (893) open VIDEOIO(V4L2:/dev/video1): can't open camera by index Traceback (most recent call last): File "/home/uowa/Public/wcamera.py", line 15, in <module> im_v1 = cv2.vconcat([frame0, frame1]) cv2.error: OpenCV(4.5.1) /tmp/pip-wheel-a8gfdc_n/opencv-python_13563f08137a4b20bc4dfee05bcbf854/opencv/modules/core/src/matrix_operations.cpp:111: error: (-215:Assertion failed) src[i].dims <= 2 && src[i].cols == src[0].cols && src[i].type() == src[0].type() in function 'vconcat' >>>

###該当のソースコード

import numpy as np import cv2 video_capture_0 = cv2.VideoCapture(0) video_capture_1 = cv2.VideoCapture(1) while True: # Capture frame-by-frame ret0, frame0 = video_capture_0.read() ret1, frame1 = video_capture_1.read() im_v1 = cv2.vconcat([frame0, frame1]) cv2.imshow('concat', im_v1) if cv2.waitKey(1) & 0xFF == ord('q'): cv2.imwrite('photo.jpg', frame0) break # When everything is done, release the capture video_capture_0.release() video_capture_1.release() cv2.destroyAllWindows()

試したこと

can't open camera by index
とあるので、よくわからないが、indexが間違ってるのだろうと推測して、
Thonnyに

v4l2-ctl --list-devices

と打ち込んでみたら下記のように出ます、カメラの情報は一番下二つのUSB2.0のとこだと思うのですが
1つのカメラにvideo0 video1 media0というふうにでる理由がわからないです。

よろしくお願いします。

bcm2835-codec-decode (platform:bcm2835-codec): /dev/video10 /dev/video11 /dev/video12 /dev/video18 /dev/video31 /dev/media4 bcm2835-isp (platform:bcm2835-isp): /dev/video13 /dev/video14 /dev/video15 /dev/video16 /dev/video20 /dev/video21 /dev/video22 /dev/video23 /dev/media2 /dev/media3 rpivid (platform:rpivid): /dev/video19 /dev/media5 USB2.0 PC CAMERA: USB2.0 PC CAM (usb-0000:01:00.0-1.2): /dev/video0 /dev/video1 /dev/media0 USB2.0 PC CAMERA: USB2.0 PC CAM (usb-0000:01:00.0-1.4): /dev/video2 /dev/video3 /dev/media1

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

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

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

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

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

guest

回答1

0

ベストアンサー

カメラ持ってないので試していませんが、2台目のカメラのインデックスを2にしたら動きませんかね。
(というか毎回インデックス調査した方が良さそうな感じですね。)

https://dev.classmethod.jp/articles/opencv-device-id-by-port-number/
https://qiita.com/mashi0923/items/d6f85979303cbeb7fa0e

なおvideo0に対するvideo1は

https://qiita.com/github0013@github/items/369313448aba162374e9
https://unix.stackexchange.com/questions/512759/multiple-dev-video-for-one-physical-device/539573#539573

The second device provides metadata about the video data from the first device.

だそうです。(カメラ持ってない(略))

投稿2023/04/11 04:49

poto568

総合スコア258

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

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

Uowa

2023/04/11 06:01

2にしたら、解決しました!!!! ありがとうございます理解できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問