摄像头人脸识别的部分逻辑

关于安卓人脸识别的部分逻辑。

1.首先学会对安卓系统的摄像头的调用和控制

Android提供了Camera来控制拍照,步骤如下:
(1)调用Camera的open()方法打开相机。
(2)调用Camera的getParameters()获取拍照参数,该方法返回一个Cmera.Parameters对象。
(3)调用Camera.Parameters对象对照相的参数进行设置。
(4)调用Camera的setParameters(),并将Camera.Parameters对象作为参数传入,这样就可以对拍照进行参数控制,Android2.3.3以后不用设置。
(5)调用Camerade的startPreview()的方法开始预览取景,在之前需要调用Camera的setPreviewDisplay(SurfaceHolder holder)设置使用哪个SurfaceView来显示取得的图片。
(6)调用Camera的takePicture()方法进行拍照。
(7)程序结束时,要调用Camera的stopPreview()方法停止预览,并且通过Camera.release()来释

2.帧预览的图像获取

Camera的输出格式不是单一的,可以分为YUV、JPEG、RGB、RAW,这几种格式。
1、YUV
“Y”表示明亮度(Luminance、Luma),“U”和“V”则是色度、浓度(Chrominance、Chroma), 一般情况下sensor支持YUV422格式,即数据格式是按Y-U-Y-V次序输出的。
2、JPEG
这个不用很介绍,作为一种存储格式它是非常普遍的,但是作为sensor的输出格式的话,一般是低分辨率的,其自带JPEG engine,可以直接输出压缩后的jpg格式的数据
3、RGB
传统的红绿蓝格式,比如RGB565.通俗点说它的颜色混合方式就好像有红、绿、蓝三盏灯,当它们的光相互叠合的时候,色彩相混,而亮度却等于两者亮度之总和,越混合亮度越高,即加法混合。
4、RAW
图像感应器将捕捉到的光源信号转化为数字信号的原始数据。RAW文件是一种记录了数码相机传感器的原始信息,同时记录了由相机拍摄所产生的一些原数据(Metadata,如ISO的设置、快门速度、光圈值、白平衡等)的文件。RAW是未经处理、也未经压缩的格式,可以把RAW概念化为“原始图像编码数据”或更形象的称为“数字底片”。

RGB图像大家都了解,RGB图像分为了三个颜色分量,R红色分量,G绿色分量,B蓝色分量。而YUV图像,也是分为了三个分量,Y亮度分量,用来表示明亮度,也叫灰阶值,U分量和V分量是色值分量,用来表示图像色彩与饱和度,其中U分量也叫Cb,表示的图像蓝色偏移量,V分量也叫Cr,用来表示图像红色部分偏移量,所以YUV有时也写作YCbCr。
YUV图像把亮度和色度分开了,避免了亮度和色度的相互干扰,可以在降低色度采样率的情况下,保持图像的视觉质量。

3.异步处理

class MAsyncTask extends AsyncTask<void, string="">{
        private ProgressBar mProgressBar;
        private TextView mTextView;
 
        public MAsyncTask(ProgressBar mProgressBar, TextView mTextView) {
            this.mProgressBar = mProgressBar;
            this.mTextView = mTextView;
        }
 
        @Override
        protected void onPreExecute() {
            mTextView.setText("开始执行");
            super.onPreExecute();
        }
 
        @Override
        protected String doInBackground(Void... params) {
            for(int i = 0; i <= 100; i++){
                publishProgress(i);//此行代码对应下面onProgressUpdate方法
                try {
                    Thread.sleep(100);//耗时操作,如网络请求
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            return "执行完毕";
        }
 
        @Override
        protected void onProgressUpdate(Integer... values) {
            mProgressBar.setProgress(values[0]);
            super.onProgressUpdate(values);
        }
 
        @Override
        protected void onPostExecute(String s) {
            mTextView.setText(s);
            super.onPostExecute(s);
        }
    }

    开始执行异步线程
        MAsyncTask asyncTask = new MAsyncTask(mTestPB, mTestTV);
        asyncTask.execute();//开始执行
YOLOv5是一种用于目标检测的深度学习模型,能够识别图像或视频中的不同物体,包括人脸。而摄像头则是一种用于捕捉图像或视频的设备。人脸识别是一种基于人脸特征的生物识别技术,可用于识别人脸并进行身份验证。 YOLOv5的源代码可通过开源项目https://github.com/ultralytics/yolov5 下载。该代码提供了训练和运行YOLOv5的所有必要功能。在该代码库中,可以找到与摄像头相关的示例代码,以便将YOLOv5模型应用于实时的人脸识别。 要将YOLOv5应用于摄像头人脸识别,可以按照以下步骤进行操作: 1. 下载YOLOv5的源代码,并按照README文件中的说明进行环境配置和安装。 2. 将训练好的YOLOv5模型或使用预训练模型(如果没有自己的数据集)放入模型文件夹。 3. 在源代码中找到与摄像头相关的示例代码,通常是一个名为camera.py或similar的文件。 4. 运行示例代码并连接到摄像头设备。 5. 在代码中添加人脸识别逻辑,可以使用现有的人脸识别库或自己实现一个。 6. 根据目标需求调整模型和参数,如置信度阈值、人脸相似度等。 7. 测试和优化,确保摄像头人脸识别系统的性能达到期望的要求。 综上所述,通过使用YOLOv5的源代码,并结合摄像头设备和人脸识别技术,可以实现一个基于深度学习的实时人脸识别系统。这个系统可以用于许多领域,如安防监控、访客管理、身份验证等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值