OpenCV4人脸识别在Linux,Windows和Android上的安装

OpenCV4版本为4.0.1。
在这里插入图片描述

Windows平台

  1. 下载win pack,如果浏览器下载太慢,可以使用迅雷下载。
    在这里插入图片描述
  2. 直接安装
    在这里插入图片描述
  3. 把build/java/opencv-401.jar包导入到自己项目的lib中,如果是maven 项目,则把它打包成maven依赖。
# maven install
mvn install:install-file -Dfile=opencv-401.jar -DgroupId=org.opencv -DartifactId=opencv -Dversion=4.0.1 -Dpackaging=jar
  1. 把build/java/x64或x86/opencv_java401.dll文件复制到项目lib或根目录,根据实际情况。主要是用于代码中导入dll时读取使用。
//代码中使用到该文件的代码,Core.NATIVE_LIBRARY_NAME会根据不同版本的opencv.jar而不同。
 System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
  1. 编写图片人脸识别的代码,官方的代码,其中lbpcascade_frontalface.xml是官方提供的用于人脸识别的分类器。
package com.even.faceai;

import org.opencv.core.*;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.opencv.objdetect.CascadeClassifier;

public class ImageFaceRecognize {
    public static void main(String[] args) {
        System.out.println("Hello, OpenCV");
        // Load the native library.
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        new DetectFaceDemo().run();
    }
}

class DetectFaceDemo {
    public void run() {
        System.out.println("\nRunning DetectFaceDemo");
        // Create a face detector from the cascade file in the resources
        // directory.
        /*读取lbpcascade_frontalface.xml,确保路径正确。该文件在sources/data/lbpcascades目录下,data目录还有其他分类器xml文件*/
        CascadeClassifier faceDetector = new CascadeClassifier(getClass().getResource("/lbpcascade_frontalface.xml").getPath());
        /*要识别的图片路径,确保路径正确。可以直接写绝对路径*/
        Mat image = Imgcodecs.imread(getClass().getResource("/lena.png").getPath());
        // 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()) {
            Imgproc.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.
        String filename = "faceDetection.png";
        System.out.println(String.format("Writing %s", filename));
        Imgcodecs.imwrite(filename, image);
    }
}

Android 平台

  1. 下载opencv-android pack。同样,如果浏览器自带的下载器下载慢,可以使用迅雷。
    在这里插入图片描述
    在这里插入图片描述
  2. 解压文件,其中sdk是opencv的sdk项目,可以编译。samples是opencv提供的样例项目。4.0以上是用android studio开发的。
    在这里插入图片描述
  3. 打开android studio,加载samples项目
    在这里插入图片描述
  4. 等待gradle来build项目,项目的compileSdkVersion 是26,minSdkVersion是21。因此如果sdk没有26 platform,会自动下载。可以在打开项目前,修改samples/build.gradle,建议不要修改。尽量让它自己编译。
  5. build完成后,会另外自动生成一个opencv module,此module对应sdk目录,其中face-detection即人脸识别模块,直接运行face-detection即可。
    在这里插入图片描述

Linux

此处使用Ubuntu-16.04.5-desktop-amd64。
注意,opencv在Linux系统上运行相对来说要复杂点,需要编译jar包。不能使用windows平台的和android平台的jar。另外,在Linux系统输入的命令都是在sudo下执行。

  1. 下载sources包,官方提供的下载链接貌似不管是浏览器自带的下载器还是迅雷都下载得很慢,因此,提供另一个链接。https://sourceforge.net/projects/opencvlibrary/files/4.0.1/ ,下载OpenCV 4.0.1.tar.gz。
    在这里插入图片描述
  2. Linux安装依赖
# 必须装
[compiler] sudo apt-get install build-essential
# 必须装,其中libavcodec-dev是用于图像转换的
[required] sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
# 可选,此依赖安装source下载很慢,可以事先通过FQ或修改apt镜像源。
[optional] sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
# 安装ant环境,如果是java开发,必须安装,否则不会生成jar包,保守起来再安装一个jdk
1、从http://ant.apache.org 上下载tar.gz版ant
2、复制到/usr下
3、tar -vxzf apache-ant-1.9.2-bin.tar.gz  解压
4、chown -R 777 apache-ant
5、vi /etc/profile    修改系统配置文件
    #set Ant enviroment
    export ANT_HOME=/usr/apache-ant-1.9.2
    export PATH=$PATH:$ANT_HOME/bin
6、source /etc/proifle   立刻将配置生效
7、ant -version   测试ant是否生效
  1. 把下载的OpenCV上传到Linux,并解压缩,或通过github下载下来,但是github下载好慢,此处不演示。
    在这里插入图片描述
  2. 在解压后的目录下,创建build文件夹,并cd进去。
cd opencv/
mkdir build/
cd build/
  1. 配置cmake build的OpenCV的源文件路径,此处会下载ippicv_2019_lnx_intel64_general_20180723.tgz,需要等待
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv -D BUILD_TESTS=OFF ..

在这里插入图片描述

…表示当前目录,即build目录。

  1. 执行build,在build目录下执行cmake,建议启动多个线程来执行,此处启动7个。
make -j7 # runs 7 jobs in parallel,此处会需要点时间,一直到100%

在这里插入图片描述
7. 安装依赖,在build目录下执行下列命令

make install
  1. 如果需要把编译后的opencv转移到另一台机器上,推荐先打包opencv目录再拷贝到相同路径的目录下,否则容易造成文件损失等问题。

猜你喜欢

转载自blog.csdn.net/weixin_37581297/article/details/87694658