Linux环境下使用OpenCV做人脸识别的小项目

Posted 果果小师弟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux环境下使用OpenCV做人脸识别的小项目相关的知识,希望对你有一定的参考价值。

一、搭建opencv的环境

前提是你的linux下有opencv的环境,如果没有请自行搭建,下面是我搭建opencv是的流程,大家可以作为参考。

安装opencv
cd /home/zhiguoxin/
mkdir opencv
chmod 777 -R opencv/
cd opencv/
cp opencv-3.4.12.zip /home/zhiguoxin/opencv/
unzip opencv-3.4.12.zip

# 安装依赖
sudo apt-get update  从服务器获取软件列表,并在本地保存为文件。这个命令,会读取软件仓库的所有源列表,然后保存在本机。方便本机用户检索、对比。
sudo apt-get upgrade 本地安装软件与本地软件列表对比,如本地安装版本低,会提示更新。将本地安装软件与本地软件列表对比,如本地安装版本低,会提示更新。

sudo apt-get install build-essential
sudo apt-get install libavcodec-dev
sudo apt-get install libavformat-dev
sudo apt-get install libswscale-dev
sudo aptitude install libgtk2.0-dev     
sudo apt-get install libjpeg.dev    
sudo apt-get install libtiff5.dev 
sudo apt-get install libjasper-de 

# 在opencv目录下创建build文件夹
mkdir build
# 进入build文件夹
cd build
# 使用cmake编译参数
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
# 使用make创建编译(时间很长)
sudo make -j4
# 执行命令
sudo make install
# 修改 opencv.conf 文件
sudo gedit /etc/ld.so.conf.d/opencv.conf
打开后的文件是空的,添加 opencv 库的安装路径:/usr/local/lib ,保存退出
/usr/local/lib
# 执行如下命令使得刚才的配置路径生效
sudo ldconfig  
# 修改 bash.bashrc 文件
sudo gedit /etc/bash.bashrc  
# 在bash.bashrc 文件最末尾添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig  
export PKG_CONFIG_PATH  

# 保存退出,执行如下命令使得配置生效
source /etc/bash.bashrc  
# 更新一下
sudo updatedb 
# 至此所有的配置都已经完成。不放心的话可以查看一下opencv版本信息
pkg-config --modversion opencv

二、编写代码

1、新建opencv_face.cpp文件

vim opencv_face.cpp

2、查看摄像头是否打开

ls dev/vide0

3、编写程序

#include<opencv2/opencv.hpp>
#include<vector>

using namespace cv;
int main()

    VideoCapture cam(0); 
    namedwindow("video"); 
    //加载级联分类器
    CascadeClassifier classifier("/home/zhiguoxin/opencv/opencv-3.4.12/data/haarcascades/haarcascade_frontalface_default.xml");
 
    Mat image; //存放真彩图
    Mat gray;  //存放灰度图
    
    while(1)
    
        cam >> image; 
        cvtColor(image,gray,COLOR_BGR2GRAY); //把真彩图转传成灰度图
        equalizeHist(gray,gray); //均衡化
        std::vector<Rect> faces; 
        classifier.detectMultiScale(gray, faces); //检测人脸
        if(faces. size())
        
            rectangle(image, faces[0],Scalar(0,0,255)); //画框
        
        imshow("video",image);//显示图像
        if(waitKey(25)!= 255)
        
            break; 
                
    
    return 0;

4、编译

g++ opencv_face.cpp -o opencv_face -lopencv_core -lopencv_videoio -lopencv_highgui -lopencv_objdetect -lopencv_imgproc

5、运行

./opencv_face

结果如下图

以上是关于Linux环境下使用OpenCV做人脸识别的小项目的主要内容,如果未能解决你的问题,请参考以下文章

想做人脸识别的开发,有没有android的功能全的人脸识别SDK?

我们公司要做人脸识别的考勤,哪里有免费的活体检测安卓版本SDK?可以识别真人的

OpenCV之未定义:FaceRecognizer

活体检测-用照片来做人脸识别可行吗?

手把手教你opencv做人脸识别(附源码+文档)

怎样使用OpenCV进行人脸识别