Android使用相机的简单操作及应用

前言

背景:最近需要把人脸识别的SDK嵌入应用里面,使用的是ANDROID的平台。
GITHUB上有开源的项目,GITHUB地址:
https://github.com/asdfqwrasdf/ArcFaceDemo
本文主要就是描述一下CAMERA操作的时候遇到的一些问题。

图像数据获取

使用系统的CAMERA时,可以通过CAMERA的onPreviewFrame回调拿到摄像头的帧数据。
DEMO中使用了
https://github.com/gqjjqg/android-extend
用于实现CAMERA的surfaceview,ExtGLSurfaceView,用于surfaceview推送数据以及FRAME数据回调。

前置摄像头的预览设置

//默认使用前置摄像头
mCameraID = Camera.CameraInfo.CAMERA_FACING_FRONT;
mCameraRotate = 270;
mCameraMirror = true;
mGLSurfaceView = (CameraGLSurfaceView) findViewById(R.id.glsurfaceView);
mGLSurfaceView.setOnTouchListener(this);
mSurfaceView = (CameraSurfaceView) findViewById(R.id.surfaceView);
mSurfaceView.setOnCameraListener(this);
mSurfaceView.setupGLSurafceView(mGLSurfaceView, true, mCameraMirror, mCameraRotate);

前置摄像头拍照

拍照使用CAMERA的takePicture来处理。
需要注意的是:

//设置拍照图片大小
parameters.setPictureSize(mWidth,mHeight);

需要设置拍照图片大小。

另一个问题是如果是竖屏前置摄像头,在PictureCallback拿到拍照图片后,需要图像翻转后作为识别图片。

	//设置竖排
	int takeType = 1;
	if (takeType != 0) {  //坚拍
		Matrix matrix = new Matrix();
		matrix.reset();
		matrix.postRotate(mCameraRotate);
		//水平翻转
		if (mCameraMirror) {
			matrix.postScale(-1, 1);
		}
		bMapRotate = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(),
							bm.getHeight(), matrix, true);
		bm = bMapRotate;
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值