前提・実現したいこと
python初心者です.
python opencvを使用して,usbハブに接続したusbカメラ2台以上から同時に映像を出力+録画を行うプログラムを作成したいのですがエラーをはいてしまいます.
最終的には8台ほど接続して同様のことを行いたいのでそちらにも応用できるとありがたいです.(その場合は帯域の問題がありますが)
発生している問題・エラーメッセージ
1台目のカメラからは問題なく出力,録画が可能なのですが2台目以降は映像データを読み込むことが出来ていません.
usbカメラ自体の接続は確認できていて,デバイスの認識もコードによって確認できています.
エラーメッセージ Traceback (most recent call last): File "C:\Users*******\Documents******\python code\sample_code2dai.py", line 34, in <module> cv2.imshow('camera1', frame1) # フレームを画面に表示 cv2.error: OpenCV(4.5.4-dev) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'
該当のソースコード
python
1import cv2 2import numpy as np 3 4camera0 = cv2.VideoCapture(1,cv2.CAP_DSHOW) # カメラCh.(ここでは0)を指定 5 6# 動画ファイル保存用の設定 7fps = int(camera0.get(cv2.CAP_PROP_FPS)) # カメラのFPSを取得 8w = int(camera0.get(cv2.CAP_PROP_FRAME_WIDTH)) # カメラの横幅を取得 9h = int(camera0.get(cv2.CAP_PROP_FRAME_HEIGHT)) # カメラの縦幅を取得 10fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v') # 動画保存時のfourcc設定(mp4用) 11video = cv2.VideoWriter('video.mp4', fourcc, fps, (w, h)) # 動画の仕様(ファイル名、fourcc, FPS, サイズ) 12 13camera1 = cv2.VideoCapture(2,cv2.CAP_DSHOW) 14 15fps1 = int(camera1.get(cv2.CAP_PROP_FPS)) # カメラのFPSを取得 16w1 = int(camera1.get(cv2.CAP_PROP_FRAME_WIDTH)) # カメラの横幅を取得 17h1 = int(camera1.get(cv2.CAP_PROP_FRAME_HEIGHT)) # カメラの縦幅を取得 18fourcc1 = cv2.VideoWriter_fourcc('m', 'p', '4', 'v') # 動画保存時のfourcc設定(mp4用) 19video1 = cv2.VideoWriter('video1.mp4', fourcc1, fps, (w1, h1)) # 動画の仕様(ファイル名、fourcc, FPS, サイズ) 20 21# 撮影=ループ中にフレームを1枚ずつ取得(qキーで撮影終了) 22while True: 23 ret0, frame0 = camera0.read() # フレームを取得 24 if (ret0 == True ) : 25 cv2.imshow('camera', frame0) # フレームを画面に表示 26 video.write(frame0) # 動画を1フレームずつ保存する 27 28 ret1, frame1 = camera1.read() # フレームを取得 29 if (ret1 == True ) : 30 cv2.imshow('camera1', frame1) # フレームを画面に表示 31 video1.write(frame1) # 動画を1フレームずつ保存する 32 33 34 # キー操作があればwhileループを抜ける 35 if cv2.waitKey(1) & 0xFF == ord('q'): 36 break 37 38# 撮影用オブジェクトとウィンドウの解放 39camera0.release() 40camera1.release() 41cv2.destroyAllWindows()
ソースコード
試したこと
usbカメラの接続,認識
複数カメラを接続した状態でそれぞれを1台ずつ稼働させての映像の出力,録画は可能です.
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー