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

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yangchengtest/article/details/83785975

前言

背景:最近需要把人脸识别的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;
	}
展开阅读全文

没有更多推荐了,返回首页