実現したいこと
複数カメラを使えるようにしたいのでインデックスを取得して、エラーを吐かないコードを書きたい。
前提
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

回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
2023/04/11 06:01