<opencv>第十二课 人脸检测

涉及模块objdetect:Object Detection

1
class cv::CascadeClassifier

用于对象检测的级联分类器类。

1
bool load (const String &filename)

从文件加载分类器。

1
bool empty() const

检查分类器是否已加载。

1
void detectMultiScale(InputArray image, std::vector<Rect> &objects, double scaleFactor=1.1, int minNeighbors=3, int flags=0, Size minSize=Size(), Size maxSize=Size())

检测输入图像中不同大小的对象。检测到的对象作为矩形列表返回。

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
36
37
38
39
40
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/objdetect.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main()
{
string path = "face.pgm";
Mat img = imread(path);

CascadeClassifier faceCascade;
CascadeClassifier eyeCascade;
faceCascade.load("haarcascade_frontalface_default.xml");
eyeCascade.load("haarcascade_eye.xml");

if (faceCascade.empty()) { cout << "XML file not loaded" << endl; }
if (eyeCascade.empty()) { cout << "XML file not loaded" << endl; }
vector<Rect> faces;
vector<Rect> eyes;
faceCascade.detectMultiScale(img, faces, 1.1, 10);
eyeCascade.detectMultiScale(img, eyes, 1.1, 10);
for (int i = 0; i < faces.size(); i++)
{
rectangle(img, faces[i].tl(), faces[i].br(), Scalar(255, 0, 255), 3);
}
for (int i = 0; i < eyes.size(); i++)
{
rectangle(img, eyes[i].tl(), eyes[i].br(), Scalar(255, 255, 0), 3);
}

imshow("Image", img);
waitKey(0);

return 0;
}


“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”

微信二维码

微信支付

支付宝二维码

支付宝支付

<opencv>第十二课 人脸检测
https://hermione20.github.io/2024/10/14/第12课 人脸检测/
作者
TC
发布于
2024年10月14日
许可协议