如何处理10位Bayer数据(字节数组)

时间:2019-02-04 10:23:08

标签: java c# android opencv image-processing

我已经在某些事情上停留了几个小时,希望您能为我提供帮助。

我正在将相机集成到应用程序中,我想利用可通过为值' 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

1 个答案:

答案 0 :(得分:0)

好,因此,在Dan的宝贵帮助下,我设法从原始数据生成了图像。 一段代码:

Nullable<int> num = new Nullable<int>();

这给了我非常绿色的图像(我的下一个挑战是管理这个绿色的光环)。