• OpenCV 配置 VS 2022并识别人脸框出


    前言

    计算机视觉领域,人脸识别是一项具有挑战性且备受关注的任务。借助于开源的计算机视觉库OpenCV,我们可以轻松实现人脸识别功能,并通过在识别出的人脸周围绘制边界框的方式来突出显示人脸位置。本篇博客将介绍如何配置环境,然后使用C++和OpenCV库读取图像、进行人脸识别,并框出识别到的人脸。

    一、什么是OpenCV?

    OpenCV(Open Source Computer Vision Library)是一个开源计算机视觉和图像处理库,提供了大量的图像处理和计算机视觉算法。它由一系列C++、Python和其他编程语言的函数和类组成,可以在多个平台上运行,包括Windows、Linux、macOS等。OpenCV包含了许多用于处理图像、视频、特征检测、目标识别、机器学习等任务的函数和模块,使开发者能够快速构建各种计算机视觉应用。

    二、OpenCV的安装和配置

    1. OpenCV 下载

    链接: https://opencv.org/
    此链接为open cv 官网,可以在官网下载windows版本。
    在这里插入图片描述
    在这里插入图片描述
    点击library,接着选择release选项,下载windows的opencv-4.9.0版本安装包

    2. 安装

    点击安装包进行安装,本人安装在d盘中
    在这里插入图片描述
    安装好后安装目录的内容展示如图
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    3. 配置环境变量

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    把bin和lib文件夹加入环境变量
    在这里插入图片描述
    在这里插入图片描述
    环境变量就配置好了

    4.vs2022环境配置

    新建一个项目
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    点开属性页后,按照下面步骤输入以下两个路径
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    点击确定,包含目录就配置好了
    下面配置库目录,按照步骤,输入路径:D:\opencv\opencv\build\x64\vc15\lib
    点击确定
    在这里插入图片描述
    下面配置lib库,将lib的文件名粘贴到空白处,点击确定
    在这里插入图片描述

    我的lib库的名字是490d.lib,大家可能会由于版本的原因导致名字不一样,但后缀都是.lib
    在这里插入图片描述
    新建一个cpp文件
    在这里插入图片描述
    将下列代码输入,运行测试

    #include 
    #include 
    #include 
    #include 
    
    using namespace cv;
    using namespace std;
    int main()
    {
    	Mat img = imread("C:\\Users\\Json\\Downloads\\CatLogo.png");
    	namedWindow("Face");
    	imshow("Face", img);
    	waitKey(0);
    	return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    像这样,能把你的图片放出来,这样就可以了
    在这里插入图片描述

    三、OpenCV识别图片人脸

    #include 
    
    using namespace cv;
    
    int main(int argc, char** argv) {
        // 读取图像文件
        Mat image = imread("C:\\Users\\Json\\Downloads\\face (2).jpeg");
        if (image.empty()) {
            std::cout << "无法读取图像文件" << std::endl;
            return -1;
        }
    
        // 加载人脸识别分类器
        CascadeClassifier face_cascade;
        if (!face_cascade.load("C:\\Users\\Json\\Downloads\\haarcascade_frontalface_alt.xml")) {
            std::cout << "无法加载人脸识别分类器" << std::endl;
            return -1;
        }
    
        // 识别人脸
        std::vector<Rect> faces;
        face_cascade.detectMultiScale(image, faces, 1.1, 2, 0 | CASCADE_SCALE_IMAGE, Size(30, 30));
    
        // 在图像上绘制边界框
        for (size_t i = 0; i < faces.size(); i++) {
            rectangle(image, faces[i], Scalar(255, 0, 0), 2);
        }
    
        // 显示结果图像
        imshow("人脸识别结果", image);
        waitKey(0);
    
        return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    在这里插入图片描述

    四、总结

    通过本篇博客,我们学习了如何使用OpenCV库来实现简单的人脸识别功能,并通过绘制边界框来标记识别到的人脸位置。人脸识别是计算机视觉领域的一个重要任务,在实际应用中具有广泛的用途。借助于开源库OpenCV,我们可以轻松地实现这一功能,并将其集成到我们的应用程序中。希望本篇博客能够对你理解人脸识别技术和OpenCV库的使用有所帮助。

  • 相关阅读:
    WebDAV之葫芦儿·派盘+知识库
    echarts设置竖向不同区间范围颜色,并且x轴自定义轴线刻度范围
    git3:github的使用
    go 线程限制数量v1 --chatGPT
    ELF文件格式-笔记
    哈工大李治军老师操作系统笔记【6】:CPU管理的直观想法(Learning OS Concepts By Coding Them !)
    磺酸修饰/单分散氢氧化钙/聚苯乙烯微球/载对苯二酚聚苯乙烯-二乙烯苯交联微球的性能
    STC8H开发(十三): I2C驱动DS3231高精度实时时钟芯片
    小程序API能力集成指南——画布API汇总(二)
    maven私服搭建及应用
  • 原文地址:https://blog.csdn.net/qq_34697930/article/details/136672734