Ricoh Theta V カメラからビデオをキャプチャしています。動画は Motion JPEG (MJPEG) として配信されます。ビデオを取得するには、残念ながら HTTP POST を実行する必要があります。これは、このcv2.VideoCapture(url)
機能を使用できないことを意味します。
したがって、Web および SO 上の多数の投稿ごとにこれを行う方法は次のようになります。
bytes = bytes()
while True:
bytes += stream.read(1024)
a = bytes.find(b'\xff\xd8')
b = bytes.find(b'\xff\xd9')
if a != -1 and b != -1:
jpg = bytes[a:b+2]
bytes = bytes[b+2:]
i = cv2.imdecode(np.fromstring(jpg, dtype=np.uint8), cv2.IMREAD_COLOR)
cv2.imshow('i', i)
if cv2.waitKey(1) == 27:
exit(0)
遅いことを除けば、実際には機能します。1920x1080 jpeg ストリームを処理しています。OSX 10.12.6 を実行している Mac Book Pro で。への呼び出しは、imdecode
各画像を処理するのに約 425000 マイクロ秒かかります
なしでこれを行う方法、imdecode
またはimdecode
高速化する方法はありますか? HDビデオで(少なくとも)60FPSで動作することを望みます。
Python3.7 と OpenCV4 を使用しています。