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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java中高级工程师面试汇总

    java中高级工程师面试汇总1接口服务数据被劫包如何防止数据恶意提交1.1:防篡改客户端提交请求之前,先对自己请求的参数全部进行拼接加密得到一个加密字符串sign 请求参数加上sign,然后再发送给服务器 服务器将参数获取后也进行相同的拼接加密得到自己的sign 比较与客户端发来的sign是否相同 不相同则是被第三方修改过的,拒绝执行关键:第三方不知道加密方式和请求参数拼接规则,而客户端与服务器是知道的,因此第三方不知道修改参数后如何生成与服务器生成相同的sign 只要请求修改了一点点加密得到的就是不同的签名

    2022年7月8日
    21
  • 卷积神经网络超详细介绍

    卷积神经网络超详细介绍1、卷积神经网络的概念2、发展过程3、如何利用CNN实现图像识别的任务4、CNN的特征5、CNN的求解6、卷积神经网络注意事项7、CNN发展综合介绍8、LeNet-5结构分析9、AlexNet10、ZFNet10.1意义10.2实现方法10.3训练细节10.4卷积网络可视化10.6总结11、VGGNet11.1结构11.2网络特点:1…

    2022年6月11日
    34
  • 【Gapps】安装GooglePlay引发一系列问题[通俗易懂]

    【Gapps】安装GooglePlay引发一系列问题

    2022年1月21日
    65
  • grid布局方式_grid网格布局

    grid布局方式_grid网格布局GridBagConstraints特征:由GridBagConstraints类实现的布局管理器称为网格组布局管理器,它实现了一个动态的矩形网格,这个矩形风格由无数个矩形单元格组成,每个组件可以占用一个或多个这样的单元格。动态矩形网格:可以根据实际需要随意增减矩形网格的行数和列数。它实现的矩形网格的绘制方向由容器决定,网格的索引从0开始。下面写一个测试方法来讲解GridBagC

    2025年9月23日
    7
  • 一分钟解决Chrome浏览器主页被hao123、360和2345篡改简单有效方法[通俗易懂]

    一分钟解决Chrome浏览器主页被hao123、360和2345篡改简单有效方法[通俗易懂]当你打开浏览器看到各种首页跳转的页面,对于强迫症的我是不能接受的!各种情况都碰到了,现在给出解决方法。按照下面的方式去排查就可以一定能解决你的问题,如果不行的话你来打我呀–!。如果问题解决了希望你能推荐给其他人。方式一   查看chrom浏览器的快捷方式后面是否有小尾巴,去掉就可以。如下:方式二   查找到源程序位置,修改源文件的文件名。然后删除旧的快捷方式,重新将改名后

    2022年7月26日
    25
  • Java中常见的类加载器及双亲委派机制的原理

    相信不少的同学在面试的时候会被问到一个词:双亲委派,懂得同学懂,不懂的同学可能会尴尬一笑,那么今天咱们就来聊聊这个问题的原理,首先我们需要了解一下java中常见的几种类加载器。一、Java中常见的类加载器1.BootstrapClassLoader纯C++实现的类加载器,没有对应的Java类,主要加载的是jre/lib/目录下的核心库2.ExtClassLoader类的全名是…

    2022年4月9日
    32

发表回复

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

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