基本信息
源码名称:android集成opencv进行人脸检测
源码大小:4.24M
文件格式:.zip
开发语言:Java
更新时间:2021-11-17
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍

android集成opencv进行人脸检测


//检测人脸

 private Bitmap faceDetect(Bitmap photo) {
        Mat srcMat = new Mat();//原始图像
        Mat grayMat = new Mat();//转为灰度图像
        Mat tarMat = new Mat();//识别后的图像
        Utils.bitmapToMat(photo, srcMat);//转成Mat
        srcMat.copyTo(tarMat);
        Imgproc.cvtColor(srcMat, grayMat, Imgproc.COLOR_BGRA2GRAY);//转成灰度图
        MatOfRect faces = new MatOfRect();//检测后存放的人脸矩形坐标
        //调用检测
        //detectMultiScale(灰度图,人脸矩形坐标,尺度变化比率1.05-1.2,表示每一个目标至少要被检测到3次才算是真的目标,flag默认设置0,最小尺寸,最大尺寸)
        cascadeClassifier.detectMultiScale(grayMat, faces, 1.05, 3, 0, new Size(30, 30), new Size());
        //测试鱼
//        cascadeClassifier.detectMultiScale(grayMat, faces, 1.1, 3, 0, new Size(96, 96), new Size());
        //处理人脸数据
        List<Rect> faceList = faces.toList();
        System.out.println("人脸数:" faceList.size());
        Toast.makeText(getApplicationContext(), "人脸数:" faceList.size(), Toast.LENGTH_LONG).show();
        if (faceList.size() > 0) {
            for (Rect rect : faceList) {
                //人脸画矩形
                //rect.tl()左上角坐标,rect.br()右下角坐标
                Imgproc.rectangle(tarMat, rect.tl(), rect.br(), new Scalar(0, 255, 0, 255), 6);
            }
        }
        Bitmap showBitmap = Bitmap.createBitmap(photo.getWidth(), photo.getHeight(), Bitmap.Config.ARGB_8888);
        //Mat转bitmap
        Utils.matToBitmap(tarMat, showBitmap);
        //释放内存
        grayMat.release();
        tarMat.release();
        srcMat.release();
        return showBitmap;
    }