我意识到openCV将12位图像视为u16,但是与最左边的位对齐。然后,如果我只使用imwrite与原始数据(从相机-GK660m降低12位),在Windows 7下,我的图像看起来完全是黑色的。我想窗户并不知道我的图像的动态范围是0-4095。然后我使用Labview图像包来验证正确的数据,并再次保存到png。此时窗口7可以显示具有正确范围的图像。那么我在使用openCV时错过了什么?
答案 0 :(得分:0)
很抱歉,如果我首先没有明确提出问题。经过一番研究后,我在Ni forums找到答案。因此,为了正确查看png文件,将数据(12位)移位到完整位深度(16位)的最左侧,然后用最高位填充空的(右4位) 。例如:
3144 = 0b 0000 1100 0100 1000变为50316 = 0b 1100 0100 1000 1100
编写图像时,所有三个程序(Matlab,Labview和OpenCV)都执行了 left-replication ,但只有Labview似乎使用 sBit (有效位)默认情况下PNG格式的大块;从而正确读取图像值。其他两个可能需要在加载后进行一次移位。