qidao123.com技术社区-IT企服评测·应用市场

标题: JavaCV的摄像头实战之八:人脸检测 [打印本页]

作者: 老婆出轨    时间: 2023-6-19 06:49
标题: JavaCV的摄像头实战之八:人脸检测
欢迎访问我的GitHub

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

简单的设计


检测服务接口DetectService

  1.         /**
  2.      * 初始化操作,例如模型下载
  3.      * @throws Exception
  4.      */
  5.     void init() throws Exception;
  6.     /**
  7.      * 得到原始帧,做检测,添加框选
  8.      * @param frame
  9.      * @return
  10.      */
  11.     Frame convert(Frame frame);
  12.     /**
  13.      * 释放资源
  14.      */
  15.     void releaseOutputResource();
复制代码
  1.     /**
  2.      * 根据传入的MAT构造相同尺寸的MAT,存放灰度图片用于以后的检测
  3.      * @param src 原始图片的MAT对象
  4.      * @return 相同尺寸的灰度图片的MAT对象
  5.      */
  6.     static Mat buildGrayImage(Mat src) {
  7.         return new Mat(src.rows(), src.cols(), CV_8UC1);
  8.     }
复制代码
[code]    /**     * 检测图片,将检测结果用矩形标注在原始图片上     * @param classifier 分类器     * @param converter Frame和mat的转换器     * @param rawFrame 原始视频帧     * @param grabbedImage 原始视频帧对应的mat     * @param grayImage 存放灰度图片的mat     * @return 标注了检测结果的视频帧     */    static Frame detect(CascadeClassifier classifier,                        OpenCVFrameConverter.ToMat converter,                        Frame rawFrame,                        Mat grabbedImage,                        Mat grayImage) {        // 当前图片转为灰度图片        cvtColor(grabbedImage, grayImage, CV_BGR2GRAY);        // 存放检测结果的容器        RectVector objects = new RectVector();        // 开始检测        classifier.detectMultiScale(grayImage, objects);        // 检测结果总数        long total = objects.size();        // 如果没有检测到结果,就用原始帧返回        if (total




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