[英]16bit Stero Video Capture pixel wise bit separation
我有一个立体相机,它使用UVC标准以以下格式输出相机的图像。 摄像头设备为OVRvision PRO
使用USB电缆将相机直接连接到PC,并使用opencv(python)中的VideoCapture类获取视频流
我从docs那里得到的信息是,每个像素,像素的16位数据都以左眼的形式传输,高8位作为左眼,而右眼传输的是低8位。
我在框架中得到的dtype是uint8
我不确定如何继续将视频捕获中的每个像素分开。 我将不胜感激任何帮助。
cv2.VideoCapture
将返回numpy数组,因此,如果它们是16位的,则它们的数据类型应该为np.uint16
。
在这种情况下,解决方案很简单:做与拆分单个16位值相同的操作。 Numpy提供所有必需运算符的向量化版本。
对:
强制转换为np.uint8
(高位被丢弃)
right = np.uint8(frame)
剩下:
转换为np.uint8
left = np.uint8(frame >> 8)
如果将输入图像缩小为8位深度,则将剩下两个16级图像。 要检索这两个组件,您只需稍微修改一下方法即可。
控制台中的示例:
>>> a = np.ones((4,4),np.uint8) * 0x73
>>> a & 0xF
array([[3, 3, 3, 3],
[3, 3, 3, 3],
[3, 3, 3, 3],
[3, 3, 3, 3]], dtype=uint8)
>>> a >> 4
array([[7, 7, 7, 7],
[7, 7, 7, 7],
[7, 7, 7, 7],
[7, 7, 7, 7]], dtype=uint8)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.