我已经在某些事情上停留了几个小时,希望您能为我提供帮助。
我正在将相机集成到应用程序中,我想利用可通过为值' bayer-mipi-10grbg 检索的RAW数据。 >”作为“ 图片格式 ”参数。使用我的Redmi Note 6,在OnPictureTaken回调中,我得到了一个字节数组(15,482,880字节)。
我尚未设法利用此字节数组。
我读到有必要对数据进行去拜耳处理以获得可用的RGB图像。因此,我选择使用OpenCv来简化生活,请参见以下代码:
public void OnPictureTaken(byte[] data, Camera camera)
{
var height = 4032;
var width = 3024;
var mBayer = new Mat(width, height, CvType.Cv16u);
var mRgb = new Mat();
mBayer.Put(0, 0, /* data' */);
Imgproc.CvtColor(mBayer, mRgb, Imgproc.COLORBayerGR2BGR);
Imgcodecs.Imwrite($"{_galleryFolder}/{DateTime.Now.ToString("yyMMddhhmmss")}", mRgb);
}
我的问题是,要构建一个Cv16u矩阵,我不能给它提供字节数组,如果我正确理解的话,它需要一个shorts数组。
我的问题是,我应该对我的字节数组进行什么变换才能获得有效的短裤数组?
编辑: 短裤数组显然不是字节数组的简单副本,例如,我想象前x个字节对应于短裤数组的第一个值(这是一个示例)。我不知道是这种转变。
Edit2: 4032x3024是我从参数“原始尺寸”获得的尺寸。我显然很难在此大小和我收到的字节数组的大小之间建立链接。 我已经上传了一个文件,其中包含我收到的字节数组(按原样保存,未经处理): https://ufile.io/gsis9
答案 0 :(得分:0)
好,因此,在Dan的宝贵帮助下,我设法从原始数据生成了图像。 一段代码:
Nullable<int> num = new Nullable<int>();
这给了我非常绿色的图像(我的下一个挑战是管理这个绿色的光环)。