gpt4 book ai didi

android - 如何从安卓相机捕获原始图像

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:00:29 26 4
gpt4 key购买 nike

takePicture rawCallback 返回一个空指针。 getPictureFormat 只允许 .jpg。虽然可以使用 getParameters() setJpegQuality(100) setParameters 改进 jpeg,但返回的图像仍然是 jpeg。要获取位图图像,需要调用 BitmapFactory.decodeByteArray,这可能需要 1/2 秒的处理时间。

我正在处理的应用程序需要相机可以产生的最详细的图像,这并不一定意味着漂亮。原始相机芯片捕获格式是拜耳。

最佳答案

android(至少我的)有 2 个相机参数 "rawsave-mode""rawfname",默认 rawsave-mode=0。通过设置 rawsave-mode=1,相机将保存原始相机图像文件,同时照常执行其他相机功能。

Camera.Parameters parameters=preview.camera.getParameters();
parameters.set("rawsave-mode", "1");
parameters.set("rawfname", "/mnt/sdcard/test.raw");
preview.camera.setParameters(parameters);
preview.camera.takePicture(shutterCallback, null, jpegCallback);

生成的文件的实际名称被修改为包括正在生成的原始文件的参数。对于我的一个机器人,生成的名称是 "test__1604x1206_10_2.raw",它是一张 1604x1206 图像,10bit 格式 2. 和 "test__1284x966_10_3.raw" 这是一张 1284x966 的图像,10 位 格式 3。10 字节 存储为 2 字节短整数(小端)

parameters.set("rawsave-mode", "2");
// setting the rawsave-mode to 2 increased the resolution to 3204x2406
// and output the file test__3204x2406_10_2.raw

图像数据大约为 8 位,但在 10 位 范围内 float ,较亮的图像可能使用较高的值,较暗的图像可能使用较低的值。这允许图像处理软件创建直方图并捕获图像的有用范围。由于光线不是常数,因此还可能有必要调整一个 channel 与另一个 channel 不同,以使图像看起来颜色正确。网上有很多关于颜色理论的信息可以充分解释这一点,但是新用户要注意,10 位8 的转换很快就会变得很深。如果你想要一张漂亮的照片,请使用 android 图片捕获而不是原始图像!

格式表示位的拜耳模式。 Bayer 是一种格式,其中行和列的奇数/偶数值指示像素代表哪种颜色,其中 RGB 对于每个像素的每个颜色 channel 都有一个 8 位 值, bayer 对于像素只有一个 10 位 值,其中一个像素是红色,然后是下一个绿色,红色,绿色,红色,绿色。然后下一行有蓝色,绿色,蓝色,绿色,蓝绿色。要确定像素的 RGB 值,需要解释周围​​的像素。

Format 2 has pixel order
// 0 1 2 3 4 5
// 0 G R G R G R
// 1 B G B G B G
// 2 G R G R G R
// 3 B G B G B G

格式 3 的像素顺序为

//            0 1 2 3 4 5
// 0 R G R G R G
// 1 G B G B G B
// 2 R G R G R G
// 3 G B G B G B

我不确定这项技术是否适用于其他机器人,或者它是否适用于 future 的机器人。如果有人尝试这样做,请添加成功或失败的评论。我的手机是直接中国进口解锁 iHTC Android 手机已经 Root 。

关于android - 如何从安卓相机捕获原始图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14777953/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com