๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?
[C++ ๋ก OpenCV ๊ตฌํํ๊ธฐ] (8) Face Detection ๋ณธ๋ฌธ
๐ฉ๐ป IoT (Embedded)/Image Processing
[C++ ๋ก OpenCV ๊ตฌํํ๊ธฐ] (8) Face Detection
์ง์ง์ํ์นด 2023. 6. 13. 18:37728x90
๋ฐ์ํ
<๋ณธ ๋ธ๋ก๊ทธ๋ Murtaza's Workshop ์ ์ ํ๋ธ๋ฅผ ์ฐธ๊ณ ํด์ ๊ณต๋ถํ๋ฉฐ ์์ฑํ์์ต๋๋ค :-)>
=> LEARN OPENCV C++ in 4 HOURS | Including 3x Projects | Computer Vision
๐ Face Detection
๐ง haarcascade_frontalface_default.xml (์ ๋ฉด ์ผ๊ตด ๊ฒ์ถํ๊ธฐ) ๋ค์ด๋ฐ์์ Resources/ ์ ๋ฃ๊ธฐ
CascadeClassifier.detectMultiScale(image, scaleFactor=None, minNeighbors=None, flags=None, minSize=None, maxSize=None)
image : ์
๋ ฅ ์์ (cv2.CV_8U)
scaleFactor : ์์ ์ถ์ ๋น์จ. ๊ธฐ๋ณธ๊ฐ์ 1.1.
minNeighbors : ์ผ๋ง๋ ๋ง์ ์ด์ ์ฌ๊ฐํ์ด ๊ฒ์ถ๋์ด์ผ ์ต์ข
๊ฒ์ถ ์์ญ์ผ๋ก ์ค์ ํ ์ง๋ฅผ ์ง์ . ๊ธฐ๋ณธ๊ฐ์ 3.
flags : (ํ์ฌ) ์ฌ์ฉ๋์ง ์์
minSize : ์ต์ ๊ฐ์ฒด ํฌ๊ธฐ. (w, h) ํํ.
maxSize : ์ต๋ ๊ฐ์ฒด ํฌ๊ธฐ. (w, h) ํํ.
result : ๊ฒ์ถ๋ ๊ฐ์ฒด์ ์ฌ๊ฐํ ์ ๋ณด(x, y, w, h)๋ฅผ ๋ด์
#include <opencv2/opencv.hpp> // OpenCV์์ ์ง์ํ๋ ๋ชจ๋ ๊ธฐ๋ฅ
#include <opencv2/videoio.hpp> // ๋น๋์ค ์ถ์ ๋ฐ ๋ฐฐ๊ฒฝ segmentation๊ณผ ๊ด๋ จ๋ ๋ฃจํด
#include <opencv2/imgcodecs.hpp> // ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์
์ด ์ ์ธ (Mat ์ด๋ Point๊ฐ ์ ์ธ, ํ๋ ฌ ์ฐ์ฐ ํน์ ๋ฒกํฐ ์ฐ์ฐ)
#include <opencv2/highgui.hpp> // ์๋์ฐ ํ๋ฉด, UI์ฒ๋ฆฌ(์ฌ๋ผ์ด๋, ๋ฒํผ ๋ฑ) ๋ฐ ๋ง์ฐ์ค ์ ์ด ๊ฐ๋ฅ
#include <opencv2/objdetect.hpp>
#include <iostream>
#include <stdio.h>
using namespace cv;
using namespace std;
// #8. Face Detection
void main() {
// Mat์ ์ด๋ฏธ์ง๋ฅผ ๋ด์ ๊ฐ์ฒด์ด๋ค. ํ๋ ฌ ๊ตฌ์ฑ
string path = "Resources/jk2.jpg";
Mat img = imread(path);
Mat imgResize;
resize(img, imgResize, Size(300, 300));
// ๋ฏธ๋ฆฌ ํ์ต๋์ด ์๋ ์ ๋ณด๋ฅผ ๋ถ๋ฌ์์ ๋ด๊ฐ ์ฐพ๊ณ ์ ํ๋ ๊ฐ์ฒด๋ฅผ ๊ฒ์ถํ๋ ๊ธฐ๋ฅ์ ์ ๊ณต
CascadeClassifier faceCascade;
faceCascade.load("Resources/haarcascade_frontalface_default.xml");
if (faceCascade.empty()) {
cout << "XML file not loaded" << endl;
}
vector<Rect> faces;
// ํน์ ์์์์ ๋ด๊ฐ ์ฐพ๊ณ ์ ํ๋ ๊ฐ์ฒด๋ฅผ ๊ฒ์ถ
faceCascade.detectMultiScale(imgResize, faces, 1.1, 10);
for (int i = 0; i < faces.size(); i++) {
rectangle(imgResize, faces[i].tl(), faces[i].br(), Scalar(255, 0, 44));
}
imshow("img", imgResize);
waitKey(0);
}
728x90
๋ฐ์ํ
'๐ฉโ๐ป IoT (Embedded) > Image Processing' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++ ๋ก OpenCV ๊ตฌํํ๊ธฐ] (10) Project2 - Document Scanner (1) | 2023.06.14 |
---|---|
[C++ ๋ก OpenCV ๊ตฌํํ๊ธฐ] (9) Project1 - Virtual Painter (0) | 2023.06.13 |
[C++ ๋ก OpenCV ๊ตฌํํ๊ธฐ] (7) Shapes/Contour Detection (0) | 2023.06.12 |
[C++ ๋ก OpenCV ๊ตฌํํ๊ธฐ] (6) Color Detection (0) | 2023.06.12 |
[C++ ๋ก OpenCV ๊ตฌํํ๊ธฐ] (5) Wrap Perspective (0) | 2023.06.12 |
Comments