如何从YUV2流中检索原始数据

您所在的位置:网站首页 显示器的分辨率表示为 如何从YUV2流中检索原始数据

如何从YUV2流中检索原始数据

2023-03-21 15:47| 来源: 网络整理| 查看: 265

你的视频中像素的真实格式是int16灰度像素,但它被标记为YUV2格式(可能是为了与不支持16比特的抓取器兼容)。

我看到了同样的技术,由RAVI格式.

OpenCV的默认行为是将帧从YUV2转换为BGR格式。 由于该格式没有颜色(而只是标记为YUV2),所以转换后会把你的数据搞乱。

我可能搞错了......但看起来格式是 "大恩典 "和有符号的16位。

这里有一个完整的代码样本,用于抓取和显示视频。

# open video0 cap = cv2.VideoCapture(0, cv2.CAP_MSMF) # set width and height cols, rows = 340, 240 cap.set(cv2.CAP_PROP_FRAME_WIDTH, cols) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, rows) cap.set(cv2.CAP_PROP_FPS, 30) # set fps # Disable the conversion to BGR by setting FOURCC to Y16 and `CAP_PROP_CONVERT_RGB` to 0. cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter.fourcc('Y','1','6',' ')) cap.set(cv2.CAP_PROP_CONVERT_RGB, 0) # Fetch undecoded RAW video streams cap.set(cv2.CAP_PROP_FORMAT, -1) # Format of the Mat objects. Set value -1 to fetch undecoded RAW video streams (as Mat 8UC1) while True: # Capture frame-by-frame ret, frame = cap.read() if not ret: break # Convert the frame from uint8 elements to big-endian signed int16 format. frame = frame.reshape(rows, cols*2) # Reshape to 680x240 frame = frame.astype(np.uint16) # Convert uint8 elements to uint16 elements frame = (frame[:, 0::2]


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3