IT评测·应用市场-qidao123.com

标题: JavaCV的摄像头实战之十三:年龄检测 [打印本页]

作者: 道家人    时间: 2023-7-3 13:23
标题: JavaCV的摄像头实战之十三:年龄检测
欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
本篇概览

关于性别和年龄检测

源码下载

名称链接备注项目主页https://github.com/zq2599/blog_demos该项目在GitHub上的主页git仓库地址(https)https://github.com/zq2599/blog_demos.git该项目源码的仓库地址,https协议git仓库地址(ssh)git@github.com:zq2599/blog_demos.git该项目源码的仓库地址,ssh协议
准备:文件下载


准备:代码接口简介


改动一:主程序(PreviewCameraWithGenderAge.java)

  1.     public static void main(String[] args) {
  2.         String base = "E:\\temp\\202112\\25\\opencv\";
  3.         
  4.         DetectService detectService = new AgeDetectService(
  5.                 base + "haarcascade_frontalface_alt.xml",
  6.                 base + "age\\deploy.prototxt",
  7.                 base + "age\\age_net.caffemodel");
  8.         new PreviewCameraWithGenderAge(detectService).action(1000);
  9.     }
复制代码
改动二:检测服务实现(GenderDetectService的子类)

[code]package com.bolingcavalry.grabpush.extend;import lombok.extern.slf4j.Slf4j;import org.bytedeco.javacpp.DoublePointer;import org.bytedeco.opencv.opencv_core.Mat;import org.bytedeco.opencv.opencv_core.Point;import static org.bytedeco.opencv.global.opencv_core.minMaxLoc;/** * @author willzhao * @version 1.0 * @description 检测年龄的服务 * @date 2021/12/3 8:09 */@Slf4jpublic class AgeDetectService extends GenderDetectService {    /**     * 设置训练模型时划分的年龄段,所以推理结果也是这样的年龄段     */    private static final String[] AGES = new String[]{"0-2", "4-6", "8-13", "15-20", "25-32", "38-43", "48-53", "60-"};    /**     * 构造方法,在此指定proto和模型文件的下载地址     *     * @param classifierModelFilePath     * @param cnnProtoFilePath     * @param cnnModelFilePath     */    public AgeDetectService(String classifierModelFilePath, String cnnProtoFilePath, String cnnModelFilePath) {        super(classifierModelFilePath, cnnProtoFilePath, cnnModelFilePath);    }    @Override    protected String getDescriptionFromPredictResult(Mat prob) {        DoublePointer pointer = new DoublePointer(new double[1]);        Point max = new Point();                // 把prob理解为一个数组,        // 第一个元素是"0-2"的置信度        // 第二个元素是"4-6"的置信度        // 第三个元素是"8-13"的置信度        // 第四个元素是"15-20"的置信度        // ...        // 第八个元素是"60-"的置信度        // minMaxLoc方法帮忙我们找出了置信度最高的元素,max是元素位置,pointer是这个元素的置信度        minMaxLoc(prob, null, pointer, null, max, null);        // 如果置信度太低,那就是"难以置信",就返回空字符串        if (pointer.get()




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4