java+opencv+intellij idea实现人脸识别

首先当然是需要安装opencv了,我用的是opencv2.4.13。下载完之后就可以直接安装了,安装过程也很简单,直接下一步下一步就好,我就不上图了。

接下来在opencv下找到jar包,比如我直接安装在c盘,我的jar包在C:\opencv\build\java中。

然后将jar包拷贝到lib目录中,并且在idea中配置

接着在opencv的路径下找到lbpcascade_frontalface.xml。比如我的就是C:\opencv\sources\data\lbpcascades。然后将其拷贝到src目录下。

这样该有的环境就已经搭建好了,就可以开始写代码了。

直接上代码

    public static void main(String[] args) {
        // Load the native library.
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        String url ="G:\\web\\uploadPicture\\src\\main\\resources\\assets\\4.jpg";
        new DetectFaceDemo().go(url,"G:\\1.jpg");
    }

  

  

    public void go(String srcFileName,String newPath) {

        Mat image = null;
        CascadeClassifier faceDetector = null;
        String xmlfilePath = DetectFaceDemo.class.getClassLoader().getResource("lbpcascade_frontalface.xml").getPath().substring(1);
        try {
            faceDetector = new CascadeClassifier(xmlfilePath);
            image = Highgui.imread(srcFileName);
        }catch (Exception e){
            e.printStackTrace();
        }
        // Detect faces in the image.
        // MatOfRect is a special container class for Rect.
        MatOfRect faceDetections = new MatOfRect();
        faceDetector.detectMultiScale(image, faceDetections);

        System.out.println(String.format("Detected %s faces", faceDetections.toArray().length));

        // Draw a bounding box around each face.
        for (Rect rect : faceDetections.toArray()) {
            Core.rectangle(image, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 255, 0));
        }

//         Save the visualized detection.
        System.out.println(String.format("Writing %s", newPath));
        Highgui.imwrite(newPath, image);
    }

  这样你就可以直接运行呢,但是会报错。

这时你可以打开edit,如图

修改vm option -Djava.library.path=C:\opencv\build\java\x64

接着再运行就可以了。

如果要部署到服务器上的话opencv的jar包一定要放在lib下,我之前在lib下新建了个文件夹吧jar包放在里面,一直报classnotfound的异常。

然后在tomcat的vm options中添加路径即可

但是这样有个致命的问题,他必须是一个文件路径,opencv没有提供对于流处理的封装,这不符合java的思想,也不满足项目的需求,尤其是现在许多的图片都是base64位的流。所以这又需要用stormcv这个jar包了了,再次感谢Apache。

这样我们就可以把识别的函数改为。

public void run(String imgStr) {
    BASE64Decoder decoder = new BASE64Decoder();
    Mat image = null;
    CascadeClassifier faceDetector = null;
    String xmlfilePath = DetectFaceDemo.class.getClassLoader().getResource("lbpcascade_frontalface.xml").getPath().substring(1);
    try {
        faceDetector = new CascadeClassifier(xmlfilePath);
        byte[] b = decoder.decodeBuffer(imgStr); //将base64位流解码为二进制文件
        image = ImageUtils.bytes2Mat(b);      //将二进制文件转化为mat
    }catch (Exception e){
        e.printStackTrace();
    }
    // Detect faces in the image.
    // MatOfRect is a special container class for Rect.
    MatOfRect faceDetections = new MatOfRect();
    faceDetector.detectMultiScale(image, faceDetections);
    System.out.println(String.format("Detected %s faces", faceDetections.toArray().length));
}

  

  好了,大功告成

时间: 2024-10-05 10:42:52

java+opencv+intellij idea实现人脸识别的相关文章

OpenCV实践之路——人脸识别之一数据收集和预处理

本文由@星沉阁冰不语出品,转载请注明作者和出处. 文章链接:http://blog.csdn.net/xingchenbingbuyu/article/details/51386949 微博:http://weibo.com/xingchenbing  前段时间对人脸检测和人脸标记进行了一些尝试:人脸检测(C++/Python)和用Dlib库进行人脸检测和人脸标记.但是检测和识别是不同的,检测解决的问题是图片中有没有人脸:而识别解决的问题是,如果一张图片中有人脸,这是谁的脸.人脸检测可以利用op

利用face_recognition,dlib与OpenCV调用摄像头进行人脸识别

用已经搭建好 face_recognition,dlib 环境来进行人脸识别 未搭建好环境请参考:https://www.cnblogs.com/guihua-pingting/p/12201077.html 使用OpenCV 调用摄像头 import face_recognition import cv2 video_capture = cv2.VideoCapture(0) # VideoCapture打开摄像头,0为笔记本内置摄像头,1为外USB摄像头,或写入视频路径 mayun_img

opencv+python3.4的人脸识别----2017-7-19

opencv3.1  +  python3.4 第一回合(抄代码,可实现):人脸识别涉及一个级联表,目前能力还无法理解. 流程:1.读取图像---2.转换为灰度图---3.创建级联表---4.对灰度图使用级联表方法过滤---5.迭代得到的结果依次标记出来---6.保存图像 完整代码: import cv2 #读取图片 img = cv2.imread('5.jpg') #转化为灰度图 gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #特征级联表 face_

ios OpenCv的配置和人脸识别技术

作为一个好奇心非常重的人,面对未知的世界都想去一探到底. 于是做了个人脸识别的demo. 眼下国内的关于opencv技术文章非常少.都是互相抄袭.关键是抄个一小部分还不全.时间又是非常久之前的了,和如今的一些东西对不上. 没事,我是个实在人,啥也不多说,直接上開始.期间參考了国内很多opencv的文章,代码部分參考http://m.blog.csdn.net/blog/u013810454/27868973.大家能够查看.只是他那个项目下载下来有问题. 我这个融合了全部的长处,更加全面.从配置到

AI人工智能之基于OpenCV+face_recognition实现人脸识别

因近期公司项目需求,需要从监控视频里识别出人脸信息.OpenCV非常庞大,其中官方提供的人脸模型分类器也可以满足基本的人脸识别,当然我们也可以训练自己的人脸模型数据,但是从精确度和专业程度上讲OpenCV所提供的人脸识别要弱于face_recognition,所以我们采取OpenCV处理视频流.face_recognition来识别人脸. 为什么选择Python? 博主本身是Java工程师,在公司主要通过Java语言进行开发,起初我们尝试过通过Java+OpenCV的方式来实现,但是效果并不是很

python opencv 人脸识别初识

甲.希望通过python加opencv搭建自己的人脸识别判断库 参照如下网页,配置python opencv开发环境, {博主ma6174} http://www.cnblogs.com/ma6174/archive/2013/03/31/2991315.html ubuntu中已有python-opencv的库,安装方便 sudo apt-get install libopencv-* sudo apt-get install python-opencv sudo apt-get instal

【计算机视觉】OpenCV人脸识别facerec源码分析1——FaceRecognizer概述

FaceRecognizer类 OpenCV中所有人脸识别的模型都是继承自FaceRecognizer这个基类,这个类提供了人脸识别算法的统一接口. class FaceRecognizer : public Algorithm { public: //! virtual destructor virtual ~FaceRecognizer() {} // Trains a FaceRecognizer. virtual void train(InputArray src, InputArray

python中使用Opencv进行人脸识别

上一节讲到人脸检测,现在讲一下人脸识别.具体是通过程序采集图像并进行训练,并且基于这些训练的图像对人脸进行动态识别. 人脸识别前所需要的人脸库可以通过两种方式获得:1.自己从视频获取图像   2.从人脸数据库免费获得可用人脸图像,如ORL人脸库(包含40个人每人10张人脸,总共400张人脸),ORL人脸库中的每一张图像大小为92x112.若要对这些样本进行人脸识别必须要在包含人脸的样本图像上进行人脸识别.这里提供自己准备图像识别出自己的方法. 1.采集人脸信息:通过摄像头采集人脸信息,10张以上

项目一:人脸识别(1)

1.简介: /********************************************************************** 最近开始人脸识别的个人项目练习,其实该项目中所谓的识别仅仅只是检测,我们先从最简单 的调用opencv训练好的分类器和函数,虽然只是调用,我觉得这是接触人脸识别的必经之路,只有自己亲自动手做了,虽然在重复造轮子,但只有自己亲自动手造出来的轮子,才能内化 为自己的东西. 平台:ubuntu16.04+opencv3.2 ************