opencv c++ nhận diện khuôn mặt camera

 Nguồn: Chat GPT



Để nhận diện khuôn mặt camera và so sánh với khuôn mặt đã lưu trước đó, ta cần sử dụng haarcascade classifier của OpenCV.

Bước 1: Load haarcascade classifier vào chương trình:

lua
CascadeClassifier faceCascade; faceCascade.load("haarcascade_frontalface_alt.xml");

Bước 2: Load ảnh khuôn mặt đã lưu trước đó:

java
Mat storedImage = imread("storedFace.jpg");

Bước 3: Sử dụng camera để capture khuôn mặt:

scss
VideoCapture camera(0); Mat frame; camera >> frame;

Bước 4: Nhận diện khuôn mặt trong khung hình:

c
std::vector<Rect> faces; faceCascade.detectMultiScale(frame, faces, 1.1, 2, 0 | CV_HAAR_SCALE_IMAGE, Size(30, 30));

Bước 5: So sánh khuôn mặt trong khung hình với khuôn mặt đã lưu trước đó:

scss
for (int i = 0; i < faces.size(); i++) { Rect face = faces[i]; Mat faceROI = frame(face); Mat storedFace; resize(storedImage, storedFace, Size(face.width, face.height)); if (compareHist(calcHist(&faceROI), calcHist(&storedFace), CV_COMP_CORREL) >= 0.5) { // Nếu khuôn mặt trong khung hình giống với khuôn mặt đã lưu, in ra thông báo cout << "Matched!" << endl; } else { // Nếu không giống, in ra thông báo khác cout << "Not Matched." << endl; } }

Như vậy, ta đã có được một chương trình nhận diện và so sánh khuôn mặt camera với khuôn mặt đã l

1

Để nhận diện khuôn mặt bằng camera trong OpenCV C++, bạn cần thực hiện các bước sau:

  1. Khởi tạo camera: Sử dụng hàm VideoCapture để khởi tạo camera và lấy hình ảnh từ camera.

  2. Load mô hình nhận diện khuôn mặt: Sử dụng hàm CascadeClassifier để tải mô hình nhận diện khuôn mặt từ file xml.

  3. Nhận diện khuôn mặt: Sử dụng hàm detectMultiScale để nhận diện khuôn mặt trong hình ảnh.

  4. Vẽ hình chữ nhật quanh khuôn mặt: Sử dụng hàm rectangle để vẽ hình chữ nhật quanh khuôn mặt được nhận diện.

  5. Hiển thị kết quả: Sử dụng hàm imshow để hiển thị hình ảnh với khuôn mặt được nhận diện.

Mã code cho việc nhận diện khuôn mặt bằng camera trong OpenCV C++:

#include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/objdetect/objdetect.hpp> using namespace cv; using namespace std; int main() { VideoCapture cap(0); // khởi tạo camera if (!cap.isOpened()) { cout << "Cannot open the video cam" << endl; return -1; } CascadeClassifier face_cascade; face_cascade.load("haarcascade_frontalface_default.xml"); while (true) { Mat frame; cap >> frame; if (frame.empty()) break; Mat frame_gray; cvtColor(frame, frame_gray, COLOR_BGR

......



Comments

Popular posts from this blog

Hướng dẫn tạo Users, OU và phân quyền quản lý OU trên Windows

Import JSON data into SQL Server

Data Import Best Practices in Power BI