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);

}

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • QQ开心农场外挂软件设计思路「建议收藏」

    QQ开心农场外挂软件设计思路「建议收藏」今天玩了一下QQ的开心农场,我有一堆朋友在玩。每次去偷别人的东西时,都要一个一个地点选,看看是否有可摘的东西。然后还要一个个地点摘取,这样才算偷到,感觉好像有点太麻烦了。有时候朋友的东西可摘了,但是我没时间去看(总不能每XX分钟查一次,每次查全部的朋友的吧。。@@,那样会累死。。)然后我就想,如果有一软件,可以自动去自己的好友的地里偷东西。每隔十分钟查一次,如果好友的地里有东西可以摘,就把它…

  • linux 解压缩rar文件「建议收藏」

    linux 解压缩rar文件「建议收藏」在Linux下面unrar解压缩一个大的rar文件,提示以下错误:/lib/libc.so.6:version`GLIBC_2.7’notfound(requiredbyunrar)解决方法:1,下载免安装的unrar版本2,使用绝对路径执行unrar命令/root/rar/unrarx/home/oracle/file.rar /home/oracl

  • Linux下如何解压rar文件「建议收藏」

    Linux下如何解压rar文件「建议收藏」在windows下我们压缩解压文件通常后缀为rar,在linux下我们压缩解压文件通常后缀为tar默认在linux下我们不能解压压缩rar文件,那我们如何使用呢?我们可以下载rarlinux安装包

  • 字符串索引越界_字符串的索引和切片

    字符串索引越界_字符串的索引和切片先贴出测试代码:publicclassTestStringIndex{ publicstaticvoidmain(String[]args){ Stringtest=”woshifoucengjilaiguo”; System.out.println(test.length()); chari=test.charAt(21); System.ou

    2022年10月31日
  • 移动硬盘遇到无法访问,文件或目录损坏且无法读取的解决办法[通俗易懂]

    文件或目录损坏且无法读取的解决办法大集合方法很简单,用chsdsk命令即可详解如下:开始–运行–输入cmd–输入chkdsk盘符:/f,例如:“chkdskd:/f”。等命令运行完即可。这里要注意的是,那个冒号后面要空一格,别跟着就写”/f”故障现象不管是移动硬盘还是U盘,包括本地电脑上的硬盘分区,双击打开时,提示:“无法打开H盘,文件或目录损坏且无法读取,…….

  • datagrip2021 最新激活码破解方法

    datagrip2021 最新激活码破解方法,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

发表回复

您的电子邮箱地址不会被公开。

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