3

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 を使用しています。

4

2 に答える 2