问题:
raw直接读取不能读取出原图
分析:
"76543210_FEDCBA98"和"FEDCBA98_76543210"是两种不同的通道顺序。
“76543210_FEDCBA98”: 这是一种通道顺序,其中前8位通道表示高位数据,后8位通道表示低位数据。这种通道顺序在某些情况下常见,例如一些摄像机和传感器输出的RAW图像。
“FEDCBA98_76543210”: 这是另一种通道顺序,其中前8位通道表示低位数据,后8位通道表示高位数据。这种通道顺序更符合常见的图像格式,例如BGR或RGB。
这两种通道顺序的区别在于数据的排列方式。"76543210_FEDCBA98"同时包含低位和高位数据,而"FEDCBA98_76543210"按照常见的低位在前、高位在后的顺序排列数据。
在对图像进行处理或解析时,确保使用正确的通道顺序,以避免出现颜色或数据解释不正确的问题。
解决方法
if path.endswith('.raw'):
height = 1280
width = 1944
images = np.fromfile(path, dtype='uint16')
# 转换 RAW 图像数据的通道顺序
image_rgb = np.empty((height, width), dtype=np.uint16)
# 将每个像素的通道顺序转换
for i in range(height):
for j in range(width):
pixel = images[i * width + j]
high_byte = (pixel & 0xFF00) >> 8 # 高位数据
low_byte = (pixel & 0x00FF) # 低位数据
new_pixel = (low_byte << 8) + high_byte
image_rgb[i, j] = new_pixel
images = image_rgb.copy()