Android opencv人脸识别

Android opencv人脸识别opencv人脸识别Androidopencv人脸识别图片:![在这里插入图片描述](https://img-blog.csdnimg.cn/2019012214185895.png//开始人脸检测publicvoidstart(){n_Start();}//停止人脸检测publicvoidstop(){n_Stop();}//设…

大家好,又见面了,我是你们的朋友全栈君。

opencv人脸识别

Android opencv人脸识别

下载地址:https://github.com/baoyu45585/OpenCVDemo

detectMultiScale函数
  选择最终的人脸分类器后,若想在这个基础上继续优化,那就试试这个detectMultiScale函数。具体可以查看Opencv源码,下面给出这个函数的讲解:

void detectMultiScale(
const Mat& image,
CV_OUT vector

& objects,

double scaleFactor = 1.1,

int minNeighbors = 3,

int flags = 0,

Size minSize = Size(),

Size maxSize = Size()

);

函数介绍:

参数1:image–待检测图片,一般为灰度图像加快检测速度;

参数2:objects–被检测物体的矩形框向量组;

参数3:scaleFactor–表示在前后两次相继的扫描中,搜索窗口的比例系数。默认为1.1即每次搜索窗口依次扩大10%;

参数4:minNeighbors–表示构成检测目标的相邻矩形的最小个数(默认为3个)。 如果组成检测目标的小矩形的个数和小于 min_neighbors – 1 都会被排除。如果min_neighbors 为 0, 则函数不做任何操作就返回所有的被检候选矩形框;

参数5:flags–要么使用默认值,要么使用CV_HAAR_DO_CANNY_PRUNING,函数将会使用Canny边缘检测来排除边缘过多或过少的区域, 因为这些区域通常不会是人脸所在区域;

参数6、7:minSize和maxSize用来限制得到的目标区域的范围。如果视频中误检到很多无用的小方框,那么就把minSize的尺寸改大一些,默认的为30*30。

图片: ![在这里插入图片描述](https://img-blog.csdnimg.cn/2019012214185895.png在这里插入图片描述

分别测试下面的文件效果比较好的是alt文件
在这里插入图片描述

public class NDKUtils {

private CascadeClassifier mJavaDetector;
private static final String TAG = "FaceDetectActivity";
static {
    System.loadLibrary("native-lib");
}


// 构造方法:初始化人脸检测引擎
public NDKUtils(String cascadeName,int minFaceSize) {
    if (cascadeName!=null){
        // 使用模型文件初始化人脸检测引擎
        mJavaDetector = new CascadeClassifier(cascadeName);
        if (mJavaDetector.empty()) {
            Log.e(TAG, "加载cascade classifier失败");
            mJavaDetector = null;
        } else {
            Log.d(TAG, "Loaded cascade classifier from " + cascadeName);
        }
        n_CreateObject(cascadeName,minFaceSize);
    }
}
public NDKUtils() {

}


public CascadeClassifier getmJavaDetector() {
    return mJavaDetector;
}


// 开始人脸检测
public void start() {

    n_Start();
}

// 停止人脸检测
public void stop() {
    n_Stop();
}

// 设置人脸最小尺寸
public void setMinFaceSize(int size) {

    n_SetFaceSize(size);
}

// 检测人脸
public void detect(Mat imageGray, MatOfRect faces) {

    n_Detect(imageGray.getNativeObjAddr(), faces.getNativeObjAddr());
}

// 检测人脸
public void detect(byte[] buf, int w, int h,MatOfRect faces) {

    n_Detect(buf, w, h,faces.getNativeObjAddr());
}

// 释放资源
public void release() {
    n_DestroyObject();
}


public  native int[] n_gray(int[] buf, int w, int h);

private  native void n_CreateObject(String cascadeName, int minFaceSize);
private  native void n_DestroyObject();
private  native void n_Start();
private  native void n_Stop();
private  native void n_SetFaceSize( int size);
private  native void n_Detect(long inputImage, long faces);
private  native void n_Detect(byte[] buf, int w, int h, long faces);

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133938.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月7日 下午5:46
下一篇 2022年6月7日 下午5:46


相关推荐

  • 面试必需要明白的 Redis 分布式锁实现原理!

    作者 | Vt 来源 | juejin.im/post/5e61a454e51d4526f071e1df 谈起redis锁,下面三个,算是出现最多的高频词汇: setnx…

    2021年6月22日
    108
  • kettle python_Kettle入门教程

    kettle python_Kettle入门教程最近做的项目用到了ETL工具Kettle,这个工具相当好用,可以将各种类型数据作为数据流,经过处理后再生成各种类型的数据。正如其名“水壶”,将各个地方的水倒进水壶里,再用水壶倒入不同的容器。不过一来初学乍用,二来对此任务不是很感兴趣,研究的不是很深入,可能是以一种不科学的方法使用的,但观教程,常用的内容似乎也涉及到了,并且Y大说过,要善于总结,于是有了这篇,作为入门说明吧。一、下载与安装官网地址大…

    2022年5月23日
    51
  • 查看Linux硬盘空间使用情况

    查看Linux硬盘空间使用情况查看 Linux 硬盘空间使用情况 0 概述在我们面试各大公司的时候 关于 Linux 往往最容易被问到的问题之一就是 Linux 指令 而其中 对系统软硬件参数的获取 又是相对比较容易被问到的 因为对这些参数的了解 最能直观反映应聘者对 Linux 环境是否熟悉 我们结合海量面经 提取出四个最容易被问到的 Linux 查看软硬件参数的命令 供大家参考 如何查看 Linux 硬盘使用情况如何查看 LinuxCPU 使用情况如何查看 Linux 内存使用情况如何查看 Linux 查看系统版本我们今天搞定第一个吧 1

    2026年3月18日
    1
  • 微信开放平台网站应用扫码登陆[通俗易懂]

    微信开放平台网站应用扫码登陆[通俗易懂]cookie问题现象:接收微信回调数据后,后端存储cookie,未超出cookie有效期,但cookie在浏览器关闭页面重新打开后消失原因:在微信开放平台填写授权回调域名为xx.com,但在浏览器重新打开页面时,域名默认为www.xx.com,而www.xx.cn无法获取到xx.com的cookie信息,看起来就像cookie消失了一样解决办法:在微信开放平台填写授权回调域名为www….

    2022年6月7日
    33
  • 爱发php企业发卡网源码_爱发个人版自动发卡平台PHP开源源码【官方正版】

    爱发php企业发卡网源码_爱发个人版自动发卡平台PHP开源源码【官方正版】爱发个人版自动发卡平台PHP开源网站源码是我官方研发出个人版自动发卡平台系统演示站:http://ka.yc88.net备用:http://php2.a8tg.com/后台:http://php2.a8tg.com/admin.php服务器环境:PHP5.3、zend3、mysql5.1以上版本空间要支持.htaccess伪静态使用自动发卡平台禁止销售国家违规商品,被有关机关查处或接口被冻结或资金…

    2022年7月14日
    18
  • angularjs输入验证[通俗易懂]

    angularjs输入验证[通俗易懂]转载自:http://www.tuicool.com/articles/2Qbiqi(译)AngularJS中使用的表单验证-ZackYang时间 2013-11-1514:22:00  博客园-原创精华区原文  http://www.cnblogs.com/woshinidezhu/p/Form-validation-with-AngularJS.html主题 

    2022年7月25日
    12

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号