gpt4 book ai didi

android - 从 Android 相机中提取 RGB 值

转载 作者:行者123 更新时间:2023-11-30 01:38:15 25 4
gpt4 key购买 nike

我想做的是从 Android 相机预览中拍摄的照片中获取 RGB 值流。

所以我在 Stackoverflow 和在线教程上查找了大量问题,我已经走到这一步了:

设置以下相机属性:

        Camera.Parameters param = camera.getParameters();

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int swidth = size.x;
int sheight = size.y;

param.setPreviewSize(sheight, swidth);
camera.setParameters(param);
param.setPreviewFormat(ImageFormat.NV21);

camera.setPreviewDisplay(surfaceHolder);
camera.startPreview();
camera.setDisplayOrientation(90);

param.setPreviewFormat(ImageFormat.NV21); 是为了兼容所有设备。

然后我有:

    jpegCallback = new Camera.PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {

int[] rgbs = new int[swidth*sheight]; //from above code
decodeYUV(rgbs, data, swidth, sheight);
for(int i = 0; i<rgbs.length; i++)
System.out.println("RGB: " + rgbs[i]);

其中 decodeYUV() 是给定的方法 here on SO .我试过使用这两个答案(方法),但得到了相似的结果。这意味着它一定在工作,我只是做错了什么。

现在,我假设它的格式是 ARGB。

我从上面的代码中得到以下输出流:

RGB: -16757489
RGB: -16059990
RGB: -9157
RGB: -49494
RGB: -2859008
RGB: -7283401
RGB: -4288512
RGB: -3339658
RGB: -6411776
RGB: -13994240
RGB: -16750475
RGB: -16735438
RGB: -14937280
RGB: -3866455
RGB: -16762040
RGB: -16714621
RGB: -11647630
RGB: -37121
...
...

如何从中提取 RGB 值,格式为 R/G/B = [0..255]

感谢您的帮助!

最佳答案

如果格式是 ARGB 那么:

int argb = rgbs[i];
int a = ( argb >> 24 ) & 255;
int r = ( argb >> 16 ) & 255;
int g = ( argb >> 8 ) & 255;
int b = argb & 255;

>>> 运算符将 int 右移,&& 是一个 bool 值,它屏蔽了结果的最后八位。

关于android - 从 Android 相机中提取 RGB 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34845152/

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