使用openCV将12位图像(0-4095)保存到png文件

时间:2014-10-08 22:22:05

标签: opencv camera png labview

我意识到openCV将12位图像视为u16,但是与最左边的位对齐。然后,如果我只使用imwrite与原始数据(从相机-GK660m降低12位),在Windows 7下,我的图像看起来完全是黑色的。我想窗户并不知道我的图像的动态范围是0-4095。然后我使用Labview图像包来验证正确的数据,并再次保存到png。此时窗口7可以显示具有正确范围的图像。那么我在使用openCV时错过了什么?

1 个答案:

答案 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格式的大块;从而正确读取图像值。其他两个可能需要在加载后进行一次移位。