Android 如何在Eclipse中从YUV420SP格式获取颜色饱和度或亮度

Android 如何在Eclipse中从YUV420SP格式获取颜色饱和度或亮度,android,eclipse,camera,preview,yuv,Android,Eclipse,Camera,Preview,Yuv,我必须做一个简单的应用程序,将测量饱和度,亮度等从Android上的相机预览。我的代码现在正在将图像发送到以下位置的数据: public void onPreviewFrame(byte[] data, Camera camera){ } …如果我没记错的话,它是YUV420SP格式的。我试图找到一些关于这方面的信息,但没有成功。有人能告诉我如何管理这种格式吗?请参阅Android文档:;此处描述了图像格式: 简而言之,这个字节[]包含两部分:亮度和色度。您可以使用camera对象来查找当前

我必须做一个简单的应用程序,将测量饱和度,亮度等从Android上的相机预览。我的代码现在正在将图像发送到以下位置的数据:

public void onPreviewFrame(byte[] data, Camera camera){

}
…如果我没记错的话,它是YUV420SP格式的。我试图找到一些关于这方面的信息,但没有成功。有人能告诉我如何管理这种格式吗?

请参阅Android文档:;此处描述了图像格式:

简而言之,这个
字节[]
包含两部分:亮度和色度。您可以使用camera对象来查找当前参数(不要在每次调用
onPreviewFrame()
时都在生产代码中使用此参数,因为这些调用是性能负担,但要重用这些值):

int w = camera.getParameters().getPreviewSize().width;
int h = camera.getParameters().getPreviewSize().height;

byte[] luma = new byte[w*h];
byte[] chroma = new byte[w*h/2];
System.arraycopy(data, 0, luma, 0, w*h);
System.arraycopy(data, w*h, chroma, 0, w*h/2);

int Y_at_x_y = luma[x + y*w];           // or data[x + y*w]
int U_at_x_y = chroma[x/2 + y*w/2 + 1]; // or data[w*h + x/2 + y*w/2 + 1]
int V_at_x_y = chroma[x/2 + y*w/2];     // or data[w*h + x/2 + y*w/2]