ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

基于人脸识别北京28平台出售技术实战开发人证比对访客系统

2019-04-22 11:53:24  阅读:314  来源: 互联网

标签:人脸识别 skinPictureBox2 28 bitmap Width 证件 null 访客 currentFrame


最近有个北京28平台出售,需要的请找【大神源码论坛】dsluntan.com,详情咨询企娥3393756370,小区用到了虹软的人脸识别,效果还不错。又有一个项目要用人证访客对比,分享一下项目,希望可以帮到有需要的。

码字前先上项目地址:https://gitee.com/panmingzhi/IdCardFaceIdentifier

首先是读证的问题,我们使用的是华视CVR100U,公司已经用这个型号6年了,以前一卡通的资料都用它录,除了不好看,质量杠杠的。大部人的身份证都是很多年前办理的,所有比对的相似度不要太高。

视频采集还是使用的Aforge,使用 NewFrame 一方面要显示到实时画面,另一方面要异步的与当前读到的证件进行比对。这里请不尝试在NewFrame回调事件中直接显示到pictureBox,请使用如下方式,百试不爽:

private void VideoCaptureDevice_NewFrame(object sender, AForge.Video.NewFrameEventArgs eventArgs)
        {
            Bitmap newFrame = (Bitmap)eventArgs.Frame.Clone();
            //如果使用视频文件请注释下面的这行代码,表示不对图像进行水平翻转
            newFrame.RotateFlip(RotateFlipType.Rotate180FlipY);
            lock (sync)
            {
                if (currentFrame != null)
                {
                    currentFrame.Dispose();
                    currentFrame = null;
                }
                currentFrame = newFrame;
                skinPictureBox2.Invalidate();
            }
        }
  /**
         * 绘制当前帧到控制,必须与获取当前帧互斥
         */
        private void skinPictureBox2_Paint(object sender, PaintEventArgs e)
        {
            lock (synCurrentMat)
            {
                Bitmap bitmap = GetCurrentFrame();
                if (bitmap != null)
                {
                    e.Graphics.DrawImage(bitmap, new Rectangle(0, 0, skinPictureBox2.Width, skinPictureBox2.Height), new Rectangle(0, 0, bitmap.Width, bitmap.Height), GraphicsUnit.Pixel);
                }
            }
        }
//异步的人证对比时,使用此方法再获取实时截图
        public Bitmap GetCurrentFrame()
        {
            if (captureToken.Token.IsCancellationRequested) return null;
            lock (sync)
            {
                return (currentFrame == null || currentFrame.Width == 0 || currentFrame.Height == 0) ? null : AForge.Imaging.Image.Clone(currentFrame);
            }
        }

二代证身份证的读取频率是每1秒读一次,读到证件后,10秒内为人证比对时间,这10秒将不再读证。10秒内比对成功,显示成功提示2-3秒后,重新再开始读证。 在读证时,如果证件被正确读取到后,要重新拿开再放置证件,这个在华视的产品说明书与SDK都有说明,其它厂家如鼎识也是一样的。 华视阅读器读到的身份证图片与证件信息默认保存在SDK目录下的wz.txt与wz.bmp,使用wz.bmp做比对时,经常报内存出错,后面我将bmp先转成jpg保存一次后再做人证比对,似乎就没问题。

证件比对时还是延续了之前方式,先将证件图片解析成FaceModel,然后将当前视频截图连续与些FaceModel比对,每次读到证件时都更新一次FaceModel。

     /**
         * 绘制当前帧到控制,必须与获取当前帧互斥
         */
        private void skinPictureBox2_Paint(object sender, PaintEventArgs e)
        {
            lock (synCurrentMat)
            {
                Bitmap bitmap = GetCurrentFrame();
                if (bitmap != null)
                {
                    e.Graphics.DrawImage(bitmap, new Rectangle(0, 0, skinPictureBox2.Width, skinPictureBox2.Height), new Rectangle(0, 0, bitmap.Width, bitmap.Height), GraphicsUnit.Pixel);
                }
            }
        }
//异步的人证对比时,使用此方法再获取实时截图
        public Bitmap GetCurrentFrame()
        {
            if (captureToken.Token.IsCancellationRequested) return null;
            lock (sync)
            {
                return (currentFrame == null || currentFrame.Width == 0 || currentFrame.Height == 0) ? null : AForge.Imaging.Image.Clone(currentFrame);
            }
        }

这时截图:(本人不上像,鬼画桃胡将就一下)

1、提示放证 在这里插入图片描述 2、读到证件后立即比对 在这里插入图片描述 3、比对显示结果后将重新回到第一步 在这里插入图片描述

标签:人脸识别,skinPictureBox2,28,bitmap,Width,证件,null,访客,currentFrame
来源: https://www.cnblogs.com/zhen213/p/10749205.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有