尝试读取YUV422视频时无法将字节转换为UMat

时间:2019-09-15 12:30:20

标签: python-3.7 opencv4

我正在尝试从原始视频文件中提取帧(YUV422 8位编码),但是对于我所看到的,我需要将数据放入UMat()中,但不能使用来自缓冲区的数据。 我首先使用

转换数据

fb = np.frombuffer

但是我对如何继续感到困惑。 如果我只是将新数组与

一起使用

cv2.cvtColor(um, cv2.COLOR_YUV2BGR_Y422)

我得到None,但是尝试用它制作UMat时出现错误: um = cv2.UMat(height, width, cv2.CV_8UC2, db)

TypeError: UMat() takes at most 2 arguments (4 given)

完整代码:

    width = 1824
    height = 942
    pixels_per_frame = width * height
    with open('my_video.1', 'rb') as video:
        header = video.read(16) #passing the initial header info
        while True:
            frame_byte = video.read(pixels_per_frame * 2)
            # print(frame_byte.hex())
            if frame_byte == b"":
                break
            fb = np.frombuffer(frame_byte, dtype=np.uint8)
            um = cv2.UMat(height, width, cv2.CV_8UC2, fb)

            frame = cv2.cvtColor(um , cv2.COLOR_YUV2BGR_Y422)
            cv2.imshow("Image", frame )
            cv2.waitKey(100) ```

0 个答案:

没有答案