android camera rgb,安卓怎么实现改变camera实时预览时的图像

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

就是这个回调.

这个byte[] data就是图像帧数据了...注意这个数据是YUV420格式的...

首先转成RGB格式

public static int[] YV12ToRGB(byte[] src, int width, int height){

int numOfPixel = width * height;

int positionOfV = numOfPixel;

int positionOfU = numOfPixel/4 + numOfPixel;

int[] rgb = new int[numOfPixel*3];

for(int i=0; i

int startY = i*width;

int step = (i/2)*(width/2);

int startV = positionOfV + step;

int startU = positionOfU + step;

for(int j = 0; j < width; j++){

int Y = startY + j;

int V = startV + j/2;

int U = startU + j/2;

int index = Y*3;

//rgb[index+R] = (int)((src[Y]&0xff) + 1.4075 * ((src[V]&0xff)-128));

//rgb[index+G] = (int)((src[Y]&0xff) - 0.3455 * ((src[U]&0xff)-128) - 0.7169*((src[V]&0xff)-128));

//rgb[index+B] = (int)((src[Y]&0xff) + 1.779 * ((src[U]&0xff)-128));

RGB tmp = yuvTorgb(src[Y], src[U], src[V]);

rgb[index+R] = tmp.r;

rgb[index+G] = tmp.g;

rgb[index+B] = tmp.b;

}

}

return rgb;

}

第二步 渲染/加过滤器/加Shader.....

图像处理我就用过jhlabs.....很古老的java库....图像处理部分是直接针对RGB数组的..所以可以很方便的移植到Android上

全靠CPU运算...效率一般... 不过你需求的变色/加阴影复杂度不高 应该还能接受

你想要效率高可能还要用 RenderScript...

或者OPENGL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值