Kin*_*oul 4 rgb camera android colors surfaceholder
我正在SurfaceView使用camera.startPreview();. 关于如何从相机获取实时 RGB 读数的任何想法?
谢谢
我以为我可以得到从SurfaceView. 但最好的使用方法是:
SurfaceView。项目清单
camera = Camera.open();
cameraParam = camera.getParameters();
cameraParam.setPreviewFormat(ImageFormat.NV21);
camera.setDisplayOrientation(90);
camera.setParameters(cameraParam);
cameraParam = camera.getParameters();
camera.setPreviewDisplay(surfaceHolder);
cameraParam.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(cameraParam);
camera.startPreview();
Run Code Online (Sandbox Code Playgroud)
然后,我调用setPreviewCallback和onPreviewFrame获取传入帧,并将其转换为 RGB 像素数组。然后我可以通过for循环运行 myPixels 数组来平均所有像素强度,并检查Color.red(myPixels[i])每种所需的颜色(在onPreviewFrame.
camera.setPreviewCallback(new PreviewCallback() {
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
int frameHeight = camera.getParameters().getPreviewSize().height;
int frameWidth = camera.getParameters().getPreviewSize().width;
// number of pixels//transforms NV21 pixel data into RGB pixels
int rgb[] = new int[frameWidth * frameHeight];
// convertion
int[] myPixels = decodeYUV420SP(rgb, data, frameWidth, frameHeight);
}
}
Run Code Online (Sandbox Code Playgroud)
哪里decodeYUV420SP可以找到这里。
我将此操作计时为每帧大约需要 200 毫秒。有没有更快的方法?
| 归档时间: |
|
| 查看次数: |
15453 次 |
| 最近记录: |