【发布时间】:2021-09-03 10:52:17
【问题描述】:
我正在为一个问题苦苦挣扎,我想知道是否有更多经验的人可能会注意到我做错了什么:
我有一个 6,266,880 字节的二进制文件,其中包含以未知 Bayer pattern 保存的图像。
关于图像,我知道它的格式是 2176x1920 像素,并且它的 bit_per_pixel = 12。
我想知道哪一种是用于保存图像的拜耳格式。
我想用 cv2 库为拜耳输入提供的所有转换选项将其转换为 cv2.cvtColor(src, cv2.COLOR_BayerGR2BGR),它们是:
cv::COLOR_BayerBG2BGR
cv::COLOR_BayerGB2BGR
cv::COLOR_BayerRG2BGR
cv::COLOR_BayerGR2BGR
直到我找到提供“干净”图像作为输出的那个。
这是我正在使用的代码:
import numpy as np
import matplotlib.pyplot as plt
import cv2
pixels = np.fromfile("0000.raw", dtype = 'uint8')
""" CONVERT THE BYTE STREAM, EVERY PIXEL HAS 12 BIT, SO BYTE HAS TO BE SPLITTED AND PUTTED IN A UINT16 VARIABLE"""
data = pixels
data1 = data.astype(np.uint16)
data1[::3] = data1[::3]*256 + data1[1::3] // 16
data1[1::3] = (data[1::3] & 0x0f)*16 + data[2::3]
result = np.ravel(data1.reshape(-1,3)[:,:2])
img = result.reshape(2176, 1920)
convertedImage = cv2.demosaicing(img_scaled, cv2.COLOR_BayerGR2BGR)
cv2.imshow("tmp", convertedImage)
cv2.waitKey(0)
另外, Here 有 10 个相同图像的样本保存为原始文件,每个样本都有一个带有属性的 json
还有什么可以尝试转换它的想法吗?还是有其他方法可以找到拜耳格式?
【问题讨论】:
标签: python image numpy opencv cv2