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

ASP.NET MVC + AdminLTE

Create schedule Restart SQL Server

Bỏ dấu tiếng việt