虹软人脸识别_虹软人脸识别算法 - CSDN
精华内容
参与话题
  • 虹软人脸识别使用教程

    千次阅读 2019-01-28 18:23:22
    首先到虹软人脸AI开放平台https://ai.arcsoft.com.cn/product/arcface.html?utm_source=baidu1f&utm_medium=cpc&audience=313092完成注册登陆,并且添加一个Arcface应用,获得应用的激活码,然后...

    首先到虹软人脸AI开放平台https://ai.arcsoft.com.cn/product/arcface.html?utm_source=baidu1f&utm_medium=cpc&audience=313092完成注册登陆,并且添加一个Arcface应用,获得应用的激活码,然后下载sdk‘到本地,里面有个simpleDemo/ArcfaceDemo的android demo,还有sdk的doc文档,下面是对二者的分析和如何使用sdk

     

            调用流程:

     

    1.先重写activity的startActivityForResult()方法,访问手机的所有图片,并获取到图片文件

    2.再通过重写activity的onActivityResult()方法,处理startActivityForResult返回的文件数据(人脸图片),处理方式:

       2.1拿到文件的路径后,通过调用processImage()方法:关键代码如下:

    public void processImage(Bitmap bitmap, int type) {
            int width = bitmap.getWidth();
            int height = bitmap.getHeight();
            //bitmap转NV21
            final byte[] nv21 = ImageUtil.bitmapToNv21(bitmap, width, height);
    }

    将图片文件转成bitMap形式,便于计算机处理图片信息(图片的人脸信息)

       2.2将bitmap转为nv21,得到图片的nv21格式,宽,高后,就调用FaceEngine对象的detectFaces()方法

    List<FaceInfo> faceInfoList = new ArrayList<>();
    //人脸检测
    int detectCode = faceEngine.detectFaces(nv21, width, height, FaceEngine.CP_PAF_NV21, faceInfoList);

       detectFaces()方法的关键代码如下:

                        faceInfoList.clear();
                        int count = this.detectFaces(this.handle, data, width, height, format, this.mFaceInfoArray, this.error);
                        if (count > 0) {
                            for(int i = 0; i < count; ++i) {
                                faceInfoList.add(new FaceInfo(this.mFaceInfoArray[i]));
                            }
                        }
    
                        return this.error.code;

     

    3.拿到预处理的图像数据faceInfo后就调用extractFaceFeature()方法

    FaceFeature faceFeature = new FaceFeature();
    int frCode = faceEngine.extractFaceFeature(nv21Data, width, height, format, faceInfo, faceFeature);
    //该方法的返回值是int,frCode代表的是错误码的意思,返回的错误码为ErrorInfo.MOK表示特征提取成功
    //MOK调用成功    MERR_INVALID_PARAM无效的参数     MERR_EXPIRED操作时间过期............

     extractFaceFeature()方法的关键代码如下:

     this.extractFaceFeature(this.handle, data, width, height, format, faceInfo.getRect(), faceInfo.getOrient(), feature.getFeatureData(), this.error);
                  return this.error.code;

     进一步追踪this.后面的extractFaceFeature():

        private native void extractFaceFeature(long var1, byte[] var3, int var4, int var5, int var6, Rect var7, int var8, byte[] var9, ErrorInfo var10);
    

    这是一个原生方法,它是通过sdk中的 so库里的c或c++的函数实现的(人脸识别的一系列算法),先new一个FaceFeature(人脸特征对象,用于输出人脸特征数据)以参数形式传入到extractFaceFeature中,通过人脸识别算法为FaceFeature对象的字段FEATURE_SIZE人脸特征数据的长度赋值,再调用FaceFeature对象的setFeatureData(byte[] data)设置人脸特征数据,从而提取出人脸特征,调用FaceFeature的getFeatureData()就能获取到人脸特征数据

     
    4.拿到FaceFuture后,就调用compareFaceFeature()比对人脸:

    FaceFeature mainFeature = new FaceFeature();
    int res = faceEngine.extractFaceFeature(nv21, width, height, FaceEngine.CP_PAF_NV21, faceInfoList.get(0), mainFeature);
    FaceSimilar faceSimilar = new FaceSimilar();
    /**
    *compareFaceFeature方法
    */
    int compareResult = faceEngine.compareFaceFeature(mainFeature, faceFeature, faceSimilar);
    ItemShowInfo showInfo = new ItemShowInfo(bitmap, ageInfoList.get(0).getAge(), genderInfoList.get(0).getGender(), faceSimilar.getScore());
    //List showInfoList;
    showInfoList.add(showInfo);

     5.调用 FaceEngine 的 process 方法,传入不同的 combineMask 组合可对 Age、 Gender、Face3Dangle、Liveness 进行检测,传入的 combineMask 的任一属性都需要在 init 时进行初始化,process ()关键代码 :

     int faceProcessCode = faceEngine.process(nv21, width, height, FaceEngine.CP_PAF_NV21, faceInfoList, FaceEngine.ASF_AGE | FaceEngine.ASF_GENDER | FaceEngine.ASF_FACE3DANGLE);
        //年龄信息结果
                List<AgeInfo> ageInfoList = new ArrayList<>();
                //性别信息结果
                List<GenderInfo> genderInfoList = new ArrayList<>();
                //三维角度结果
                List<Face3DAngle> face3DAngleList = new ArrayList<>();
                //获取年龄、性别、三维角度
                int ageCode = faceEngine.getAge(ageInfoList);
                int genderCode = faceEngine.getGender(genderInfoList);
                int face3DAngleCode = faceEngine.getFace3DAngle(face3DAngleList);
                
                

    获取相似度的评分代码如下:

    float similarScore=faceSimilar.getScore();

    也可以通过如下获得:

     List<ItemShowInfo> showInfoList;
     ItemShowInfo showInfo = new ItemShowInfo(bitmap, ageInfoList.get(0).getAge(), genderInfoList.get(0).getGender(), faceSimilar.getScore());
     showInfoList.add(showInfo);
     int age=showInfoList.getAge();
     int gender=showInfoList.getGender();
     float similar=showInfoList.getSimilar();

     

     

    人脸注册 :

    给出人脸文件夹

    File dir = new File(REGISTER_DIR);
    final File[] jpgFiles = dir.listFiles()
    final int totalCount = jpgFiles.length;
    for (int i = 0; i < totalCount; i++) {
              final File jpgFile = jpgFiles[i];
                        Bitmap bitmap = BitmapFactory.decodeFile(jpgFile.getAbsolutePath());
    //处理过的Bitmap对象
                bitmap = ImageUtil.alignBitmapForNv21(bitmap);
                byte[] nv21 = ImageUtil.bitmapToNv21(bitmap, bitmap.getWidth(), bitmap.getHeight());
                        boolean success = FaceServer.getInstance().register(FaceManageActivity.this, nv21, bitmap.getWidth(), bitmap.getHeight(),
                                jpgFile.getName().substring(0, jpgFile.getName().lastIndexOf(".")));
    }

    nv21注册:

     public boolean register(Context context, byte[] nv21, int width, int height, String name) {
         /**
                 * 人脸注册关键代码
                 * ****************************重点关注**************************************************
                 */
                //特征存储的文件夹
                File featureDir = new File(ROOT_PATH + File.separator + SAVE_FEATURE_DIR);
      //图片存储的文件夹
                File imgDir = new File(ROOT_PATH + File.separator + SAVE_IMG_DIR);
     //1.人脸检测
                List<FaceInfo> faceInfoList = new ArrayList<>();
                int code = faceEngine.detectFaces(nv21, width, height, FaceEngine.CP_PAF_NV21, faceInfoList);
                if (code == ErrorInfo.MOK && faceInfoList.size() > 0) {
                    FaceFeature faceFeature = new FaceFeature();
    
                    //2.特征提取
                    code = faceEngine.extractFaceFeature(nv21, width, height, FaceEngine.CP_PAF_NV21, faceInfoList.get(0), faceFeature);
                    String userName = name == null ? String.valueOf(System.currentTimeMillis()) : name;
                    try {
                        //3.保存注册结果(注册图、特征数据)
                        if (code == ErrorInfo.MOK) {
                            YuvImage yuvImage = new YuvImage(nv21, ImageFormat.NV21, width, height, null);
                            //为了美观,扩大rect截取注册图
                            Rect cropRect = getBestRect(width, height, faceInfoList.get(0).getRect());
                            if (cropRect == null) {
                                return false;
                            }
                            File file = new File(imgDir + File.separator + userName + IMG_SUFFIX);
                            FileOutputStream fosImage = new FileOutputStream(file);
                            yuvImage.compressToJpeg(cropRect, 100, fosImage);
                            fosImage.close();
                            Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
    
                            //判断人脸旋转角度,若不为0度则旋转注册图
                            boolean needAdjust = false;
                            if (bitmap != null) {
                                switch (faceInfoList.get(0).getOrient()) {
                                    case FaceEngine.ASF_OC_0:
                                        break;
                                    case FaceEngine.ASF_OC_90:
                                        bitmap = ImageUtil.getRotateBitmap(bitmap, 90);
                                        needAdjust = true;
                                        break;
                                    case FaceEngine.ASF_OC_180:
                                        bitmap = ImageUtil.getRotateBitmap(bitmap, 180);
                                        needAdjust = true;
                                        break;
                                    case FaceEngine.ASF_OC_270:
                                        bitmap = ImageUtil.getRotateBitmap(bitmap, 270);
                                        needAdjust = true;
                                        break;
                                    default:
                                        break;
                                }
                            }
                            if (needAdjust) {
                                fosImage = new FileOutputStream(file);
                                bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fosImage);
                                fosImage.close();
                            }
    
                            FileOutputStream fosFeature = new FileOutputStream(featureDir + File.separator + userName);
                            fosFeature.write(faceFeature.getFeatureData());
                            fosFeature.close();
    
                            //内存中的数据同步
                            if (faceRegisterInfoList == null) {
                                faceRegisterInfoList = new ArrayList<>();
                            }
                            faceRegisterInfoList.add(new FaceRegisterInfo(faceFeature.getFeatureData(), userName));
                            return true;
                        }
    
    }

     

    展开全文
  • 虹软免费人脸识别sdk2.0 demo

    千次阅读 2019-02-22 16:15:49
    环境: win7以上 VS2013以上 sdk版本:ArcFace v2.0 x86 x64平台Debug、Release配置都已通过编译 下载地址:...配置过程: ...2.解压下载的x86或x64的zip包,本Demo以x64为例 3.选择平台,...

    环境:
    win7以上 VS2013以上
    sdk版本:ArcFace v2.0
    x86 x64平台Debug、Release配置都已通过编译
    下载地址:https://github.com/ArcsoftEscErd/ArcfaceDemo_CSharp.git

    配置过程:

    1.到虹软官网下载SDK2.0版本,点击下载
    2.解压下载的x86或x64的zip包,本Demo以x64为例
    在这里插入图片描述
    3.选择平台,如:在这里插入图片描述,将libarcsoft_face.dll和libarcsoft_face_engine.dll放到bin\x64\Debug下在这里插入图片描述

    4.修改工程下App.config配置文件中的APP_ID和对应的SDKKEY64的值
    在这里插入图片描述
    5.点击启动或者F5启动;
    6.其他详细信息请阅读项目中doc目录下的说明文档;
    常见问题:
    1.后引擎初始化失败
    (1)请选择对应的平台,如x64,x86
    (2)删除bin下面对应的asf_install.dat,freesdk_132512.dat;
    (3)请确保App.config下的appid,和appkey与当前sdk一一对应。

    2.SDK支持那些格式的图片人脸检测?
    目前SDK支持的图片格式有jpg,jpeg,png,bmp等。

    3.使用人脸检测功能对图片大小有要求吗?
    推荐的图片大小最大不要超过2M,因为图片过大会使人脸检测的效率不理想,当然图片也不宜过小,否则会导致无法检测到人脸。

    4.使用人脸识别引擎提取到的人脸特征信息是什么?
    人脸特征信息是从图片中的人脸上提取的人脸特征点,是byte[]数组格式。

    5.SDK人脸比对的阈值设为多少合适?
    推荐值为0.8,用户可根据不同场景适当调整阈值。

    6.可不可以将人脸特征信息保存起来,等需要进行人脸比对的时候直接拿保存好的人脸特征进行比对?
    可以,当人脸个数比较多时推荐先存储起来,在使用时直接进行比对,这样可以大大提高比对效率。存入数据库时,请以Blob的格式进行存储,不能以string或其他格式存储。

    7.在.Net项目中出现堆栈溢出问题,如何解决?
    .Net平台设置的默认堆栈大小为256KB,SDK中需要的大小为512KB以上,推荐调整堆栈的方法为:
    new Thread(new ThreadStart(delegate {
    ASF_MultiFaceInfo multiFaceInfo = FaceUtil.DetectFace(pEngine, imageInfo);
    }), 1024 * 512).Start();

    8.X86模式下批量注册人脸有内存溢出或图片空指针
    请增加虚拟内存或每次批量注册人脸控制在20张图片范围内

    9.图片中有人脸,但是检测时未检测到人脸
    (1)请调整detectFaceScaleVal的值;
    (2)请确认图片的宽度是否为4的倍数;
    (3)请确认图片是否通过ImageUtil.ReadBMP方法进行数据调整。

    感谢 虹软提供免费离线的人脸识别SDK

    展开全文
  • 虹软人脸识别SDK+Demo

    2020-07-27 15:36:17
    虹软人脸识别 SDK+Demo;已实验好用,希望对你有帮助 的,包含人脸检测,人脸对比,人脸检索功能.
  • 因为这篇博客开始写的时候是2018.3,到现在有一年多了,而虹软的sdk发生了很大的变化,所以我这里重新把博客写一遍。 多谢各位看官在这一年对该篇博客的关注。...因为人脸识别sdk(ArcFace )2.0版本使用,需要进行...

    因为这篇博客开始写的时候是2018.3,到现在有一年多了,而虹软的sdk发生了很大的变化,所以我这里重新把博客写一遍。

    多谢各位看官在这一年对该篇博客的关注。

     

    1.账号注册


    首先在虹软开发者网站上注册(用手机号注册)

    http://www.arcsoft.com.cn/ai/arcface.html

     

    2.认证

    因为人脸识别sdk(ArcFace )2.0版本使用,需要进行个人认证或者企业认证,而1.2版本不需要任何认证,但是因为版本过老,代码很多情况不能使用,所以我后面都是在说如何使用 2.0版本

    个人认证需要上传身份证正反面照片,很简单,(PS:还好不要手持身份证照片,要不然很尬)

    审核时间:官方说是3天内,我是一个小时就认证通过了

     

    3.创建应用

    首先创建应用,然后添加SDK,记得选ArcFace,版本2.0

     

    添加完应用然后下载SDK(71.2MB,超大)

    并且点击 查看激活码,会显示 APP_ID 和 SDK_KEY ,这个很关键

     

    4.下载和运行DEMO

    在这个网页下载DEMO

    https://github.com/ArcsoftEscErd/ArcfaceDemo_Android

    然后直接运行这个demo,必定报错,因为我们下载的SDK还没使用呢

    创建libs文件夹,放入 SDK文件里的 arcsoft_face.jar

    创建jniLibs->armeabi-v7a,放入SDK文件里的libarcsoft_face.so和libarcsoft_face_engine.so

    将之前获取的APP_ID和SDK_KEY填入Common->Constants.java

     

    5.运行效果

    比如我使用的是 人脸属性检测(图片)

    face[0]:20(说我20岁,我没这么小)

    face[0]:male (说我是男的)

    face[0]:ALIVE(说我是活的)

    算了,不解释着东西了,大家自己看看英文吧,不懂得百度翻译,

     

    然后我们再使用 人脸对比 1:N(图片VS图片)

    选择主图和添加对比图(对比图能够添加多个)

    每个对比图,旁边都会有一个 similar=0.98  ,这个就是说人脸相似度了

     

    6.结语

    更加深奥的就靠大家一起研究了

     

     

     

    展开全文
  • android虹软识别2.0版本,包含人脸注册,活体检测,人脸识别,人脸比对等功能。记得填写自己申请的APPID和SDKkey。更多请查看博客:https://blog.csdn.net/xiayiye5/article/details/88354267 注意: 解压后是导入...
  • # Demo_for_Windows ### Arcsoft ArcfaceDemo for Windows, VS2013 C++ ### 使用步骤: 1. 下载SDK包,32位Windows平台将五个SDK包里lib中的文件到 Demo\lib\Win32下;64位Windows平台将五个SDK包里lib中的文件到 ...
  • 有一两个月没有更新博客了,最近一直在忙人脸识别的项目,先将项目中更改虹软人脸框的方法抽取出来,希望对大家有所帮助。 尊重原创,转载请注明出处: http://blog.csdn.net/qq137722697 为什么要改...

    有一两个月没有更新博客了,最近一直在忙人脸识别的项目,先将项目中更改虹软人脸框的方法抽取出来,希望对大家有所帮助。

    尊重原创,转载请注明出处: http://blog.csdn.net/qq137722697

    为什么要改?

    先来看看sdk demo中提供的人脸框样式,这个框看上去并不是非常美观(个人觉得)

    这里写图片描述

    再看看下面这个框是不是就要顺眼一点
    这里写图片描述

    怎么换?

    先来看看原始的画法:

     @Override
        public void onAfterRender(CameraFrameData data) {
             mGLSurfaceView.getGLES2Render().draw_rect((Rect[]) data.getParams(), Color.GREEN, 2);
        }
    

    其实更换人脸识别框是非常简单的,因为虹软的人脸识别sdk已经将人脸的位置回调出来了,实时回调的是一个Rect(将回调出来的CameraFrameData强转一下即可),既然都知道人脸框的位置,那就是一个自定义View就解决的事了。

    只需要在onDraw方法中画八条线即可

     @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
            if (rect != null) {
                /**
                 * 左上角的竖线
                 */
                canvas.drawLine(rect.left, rect.top, rect.left, rect.top + 20, mPaint);
                /**
                 * 左上角的横线
                 */
                canvas.drawLine(rect.left, rect.top, rect.left + 20, rect.top, mPaint);
    
                /**
                 * 右上角的竖线
                 */
                canvas.drawLine(rect.right, rect.top, rect.right - 20, rect.top, mPaint);
                /**
                 * 右上角的横线
                 */
                canvas.drawLine(rect.right, rect.top, rect.right, rect.top + 20, mPaint);
                /**
                 * 左下角的竖线
                 */
                canvas.drawLine(rect.left, rect.bottom, rect.left, rect.bottom - 20, mPaint);
                /**
                 * 左下角的横线
                 */
                canvas.drawLine(rect.left, rect.bottom, rect.left + 20, rect.bottom, mPaint);
    
                /**
                 * 右下角的竖线
                 */
                canvas.drawLine(rect.right, rect.bottom, rect.right, rect.bottom-20, mPaint);
                /**
                 * 右下角的横线
                 */
                canvas.drawLine(rect.right, rect.bottom, rect.right-20, rect.bottom , mPaint);
            }
        }
    

    这里其实还有一个坑,就是这个Rect是相对于相机分辨率的,但是如果摄像头的预览分辨率不等于画布的大小就会出现错位的情况,比如下面的情况:(绿框是虹软demo中的人脸框,蓝色框是自定义的框)
    这里写图片描述

    怎么解决呢?你应该想到了,将宽高等比例缩放一下即可,所以提供画人脸框的一个方法:

     /**
         * 开始画矩形框
         *
         * @param rect1
         */
        public void drawFaceRect(Rect rect1) {
            this.rect = rect1;
            //将屏幕人脸框转换为视频区域的人脸框
            rect.left = rect.left * getWidth() / screenHeight+20;
            rect.right = rect.right * getWidth() / screenHeight+40;
            rect.top = rect.top * getHeight() / screenHeight+30;
            rect.bottom = rect.bottom * getHeight() / screenHeight+75;
            //在主线程发起绘制请求
            postInvalidate();
        }
    

    注意:此处的+20,+40,+30,+75都是经验值,都是相对于左上右下的位置,可根据自己的设备做微调。

    此外我们还需要提供一个清除人脸框的方法(没有识别到人脸的时候框要消失):

     public void clearRect() {
            rect = null;
            postInvalidate();
        }
    

    下面是本View完整的代码(只是demo,还有优化的地方,只是提供一种思路,思路理解了,还可以画很多炫酷的框):

    /**
     * 自定义虹软人脸识别框/人脸抓拍框/人脸追踪框
     * Created by HDL on 2018/7/31.
     */
    public class FaceRectView extends View {
        private Rect rect;
        private int screenWidth;
        private int screenHeight;
    
        public FaceRectView(Context context) {
            this(context, null);
        }
    
        public FaceRectView(Context context, AttributeSet attrs) {
            this(context, attrs, 0);
        }
    
        public FaceRectView(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
            WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
            screenWidth = wm.getDefaultDisplay().getWidth();
            screenHeight = wm.getDefaultDisplay().getHeight();
            initPaint(context);
        }
    
        private void initPaint(Context context) {
            mPaint = new Paint();
            mPaint.setAntiAlias(true);
            mPaint.setStrokeWidth(3);
            mPaint.setColor(context.getResources().getColor(R.color.color_face_rect));
        }
    
        private Paint mPaint;
    
        /**
         * 开始画矩形框
         *
         * @param rect1
         */
        public void drawFaceRect(Rect rect1) {
            this.rect = rect1;
            //将屏幕人脸框转换为视频区域的人脸框
            rect.left = rect.left * getWidth() / screenHeight+20;
            rect.right = rect.right * getWidth() / screenHeight+40;
            rect.top = rect.top * getHeight() / screenHeight+30;
            rect.bottom = rect.bottom * getHeight() / screenHeight+75;
            //在主线程发起绘制请求
            postInvalidate();
        }
    
        public void clearRect() {
            rect = null;
            postInvalidate();
        }
    
        @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
            if (rect != null) {
                /**
                 * 左上角的竖线
                 */
                canvas.drawLine(rect.left, rect.top, rect.left, rect.top + 20, mPaint);
                /**
                 * 左上角的横线
                 */
                canvas.drawLine(rect.left, rect.top, rect.left + 20, rect.top, mPaint);
    
                /**
                 * 右上角的竖线
                 */
                canvas.drawLine(rect.right, rect.top, rect.right - 20, rect.top, mPaint);
                /**
                 * 右上角的横线
                 */
                canvas.drawLine(rect.right, rect.top, rect.right, rect.top + 20, mPaint);
                /**
                 * 左下角的竖线
                 */
                canvas.drawLine(rect.left, rect.bottom, rect.left, rect.bottom - 20, mPaint);
                /**
                 * 左下角的横线
                 */
                canvas.drawLine(rect.left, rect.bottom, rect.left + 20, rect.bottom, mPaint);
    
                /**
                 * 右下角的竖线
                 */
                canvas.drawLine(rect.right, rect.bottom, rect.right, rect.bottom-20, mPaint);
                /**
                 * 右下角的横线
                 */
                canvas.drawLine(rect.right, rect.bottom, rect.right-20, rect.bottom , mPaint);
            }
        }
    }
    
    
    • 2018.9.27更新
      有小伙伴不知道怎么使用,只需要在onAfterRender回调中使用即可
     @Override
        public void onAfterRender(CameraFrameData data) {
                 params = (Rect[]) data.getParams();
                if (params.length > 0) {
                    param = params[0];
                    faceRectView.drawFaceRect(param);
                } else {
                    faceRectView.clearRect();
                }
          }
    

    尊重原创,转载请注明出处:大力哥的博客( http://blog.csdn.net/qq137722697)

    展开全文
  • 最近在研究虹软家的arcface 人脸识别 demo,现在就给大家分享一下官方的demo工程如何使用?1.下载代码:git clone https://github.com/asdfqwrasdf/ArcFaceDemo.git 或者直接下载压缩包2.前往官网申请appid和sdkkey。...
  • Android虹软人脸识别V2.1接入

    千次阅读 2019-04-28 10:05:36
    最近在做虹软人脸识别接入介入过程中遇到了一些问题,下面记录一下,防止其他人踩坑 首选先讲下接入流程 1.权限 获取设备唯一标识,用于SDK激活授权 <uses-permission android:name="android.permission....
  • 前几天虹软推出了 Android ArcFace 2.2版本的SDK,相比于2.1版本,2.2版本中的变化如下: • VIDEO模式新增faceId(类似于之前文章中提到的trackId) • 新增IR活体检测功能 • 新增IR、RGB的活体阈值设置 一、face...
  • 1首先你要到虹软的官网–注册登录 https://ai.arcsoft.com.cn/ucenter/user/userlogin 2、登录进去之后: 会让你实名认证,想使用久老老实实认证(哈哈),我这边认证过了,不贴图了。其中认证有两种:1、个人认证...
  • 虹软人脸识别集成到项目中

    千次阅读 2018-06-21 16:49:33
    libs下载 http://www.arcsoft.com.cn/ai/usercenter/index demo下载 https://github.com/asdfqwrasdf/ArcFaceDemo 总结 https://blog.csdn.net/wesker8080/article/details/76696529
  • 虹软 最近开放了人脸识别的SDK引擎(免费的哦),刚好有Android版的,就体验了一波。下面来说说Android版的SDK使用心得:ArcFace 虹软人脸认知引擎简介 目前开放的版本有人脸比对(1:1)和人脸检索
  • 虹软公司是一家具有硅谷背景的图像处理公司,除了人脸技术以外,还有多项图像及视频处理技术。 ​​【本文最后附有免费SDK 下载链接】虹软公司是一家具有硅谷背景的图像处理公司,除了人脸技术以外,还有多项图像及...
  • 虹软人脸识别2.0踩坑

    千次阅读 2019-04-23 15:46:36
    项目启动报错:java.lang.UnsatisfiedLinkError: /usr/lib/libarcsoft_face_engine_jni.so: libarcsoft_face_engine.so: cannot open shared object file: No such file or directory Dockerfile: ...
  • 虹软人脸识别2.0踩坑记录

    千次阅读 2019-03-06 11:23:46
    我是服务端集成虹软识别,除去文档介绍得那些,还有一个看不见得问题,就是win和liunx 得参数类型区别, 就因为一个参数类型错误,就报参数错误,结果使劲排查都没找到原因, /** * 人脸检测模式常量 * * @author ...
  • 亲们,问个问题,想要做个人脸识别,不仅仅要把人脸识别出来,要实现事先把相关人员的人脸信息存到数据库,下次给某个人拍照片时可以去数据库比对,然后确认是不是本人。问一下有没有人做过,求提供个思路和方法。...
  • 虹软 ArcFace 与 Dlib 人脸识别对比

    千次阅读 2018-08-27 17:01:47
    我司最近要做和人脸识别相关的产品,原来使用的是某在线人脸识别平台,识别率和识别速度很满意,但是随着量起来的话,成本也是越来越不能接受(目前该功能我们是免费给用户使用的),而且一旦我们的设备掉线了就无法...
  • C# 人脸识别Demo(基于虹软免费SDK)完整版

    千次下载 热门讨论 2020-07-30 23:32:08
    C# 人脸识别 虹软免费SDK 原版高清下载,完整版 基于虹软最新的免费SDK写的C# 人脸识别的Demo,包含人脸检测,人脸对比,人脸检索功能.有关此Demo的详细信息可以阅读博客 ...
  • java引用虹软sdk,实现人脸识别(demo)

    千次阅读 热门讨论 2019-07-10 19:29:51
    ## 开发环境准备: ###开发使用到的软件和工具: * Jdk8、mysql5.7、libarcsoft_face.dll(so)、libarcsoft_face_engine.dll(so)、libarcsoft_face_engine_jni.dll(so)、idea * 注:libarcsoft_face.dll(so)、...
1 2 3 4 5 ... 20
收藏数 1,451
精华内容 580
关键字:

虹软人脸识别