takePicture rawCallback返回一个空指针.getPictureFormat仅允许使用.jpg.虽然可以使用getParameters()setJpegQuality(100)setParameters改进jpeg,但返回的图像仍然是jpeg.要获取位图图像需要调用BitmapFactory.decodeByteArray,这可能需要1/2秒才能处理.
我正在处理的应用程序需要相机可以生成的最详细的图像,这并不一定意味着漂亮.原始相机芯片捕获格式是拜耳.
Fre*_*d F 10
所述机器人(至少矿)具有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);
Run Code Online (Sandbox Code Playgroud)
生成的文件的实际名称将被修改为包括正在生成的原始文件的参数.对于我的一个机器人,产生的名称"test__1604x1206_10_2.raw"是a1 1604x1206图像,10bit格式2.并且"test__1284x966_10_3.raw"是1284x966图像,10 bit格式3. 10 bytes存储为2 byte short int (little endian).
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
Run Code Online (Sandbox Code Playgroud)
图像数据是粗略的8 bit,但漂浮在其中10 bit,较亮的图像可能使用较高的值而较暗的较低.这允许图像处理软件创建直方图并捕获图像的有用范围.由于光不是常数,因此也可能需要以不同的方式调整一个通道,以使图像看起来颜色正确.网上有很多关于色彩理论的信息,可以完全解释这一点,但新用户要注意,转换10 bit要8快速深入.如果你想要漂亮的图片,请使用android图片捕获而不是原始图片!
格式表示位的拜耳模式.拜耳是一种格式,其中行和列的奇/偶值指示像素表示的颜色,其中每个像素的每个颜色通道RGB的8 bit值,拜耳只有一个10 bit像素值,其中一个像素是红色,然后是接下来是绿色,红色,绿色,红色,绿色.然后下一行有蓝色,绿色,蓝色,绿色,蓝绿色.要确定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
Run Code Online (Sandbox Code Playgroud)
格式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
Run Code Online (Sandbox Code Playgroud)
我不确定这种技术是否适用于其他机器人,或者它是否适用于未来的机器人.如果有人试图这样做,请添加成功或失败的评论.我的手机是直接中国进口解锁iHTC Android手机已根植.
| 归档时间: |
|
| 查看次数: |
24421 次 |
| 最近记录: |