-
Notifications
You must be signed in to change notification settings - Fork 201
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
C++ Demo - Facial Expression Recognition #233
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice and clean 👍 We can proceed to merge after the following minor comments are solved.
Hi @fengyuentau thank you for your review. I just fixed the minor issues you pointed out. |
Oops, sorry. I thought it was std::format. Please ignore this comment.
________________________________
发件人: Daniele Affinita ***@***.***>
发送时间: Monday, February 26, 2024 9:11:08 PM
收件人: opencv/opencv_zoo ***@***.***>
抄送: Yuantao Feng ***@***.***>; Mention ***@***.***>
主题: Re: [opencv/opencv_zoo] C++ Demo - Facial Expression Recognition (PR #233)
@DaniAffCH commented on this pull request.
________________________________
In models/facial_expression_recognition/demo.cpp<#233 (comment)>:
+ Mat faces = faceDetectionModel.infer(frame);
+ vector<String> expressions;
+
+ for (int i = 0; i < faces.rows; ++i)
+ {
+ Mat face = faces.row(i);
+ String exp = expressionRecognitionModel.infer(frame, face);
+ expressions.push_back(exp);
+
+ int x1 = static_cast<int>(faces.at<float>(i, 0));
+ int y1 = static_cast<int>(faces.at<float>(i, 1));
+ int w = static_cast<int>(faces.at<float>(i, 2));
+ int h = static_cast<int>(faces.at<float>(i, 3));
+ float conf = faces.at<float>(i, 14);
+
+ std::cout << cv::format("%d: x1=%d, y1=%d, w=%d, h=%d, conf=%.4f expression=%s\n", i, x1, y1, w, h, conf, exp.c_str());
Do you mean the format?
―
Reply to this email directly, view it on GitHub<#233 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AEDL63UZ6YD3UDPTRUPTGS3YVSCWZAVCNFSM6AAAAABDZGVPJOVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMYTSMBQHAZTSMBZGI>.
You are receiving this because you were mentioned.Message ID: ***@***.***>
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍 Thank you for the contribution!
@DaniAffCH Thank you for the contribution. |
This Pull Request introduces a C++ demo for utilizing and visualizing the Facial Expression Recognition (FER) model requested in issue #135 . The changes include:
demo.cpp
: This file contains the demo implementation, featuring a classYuNet
for face detection (adapted fromface_detection_yunet/demo.cpp
to create a stand-alone demo) and a classFER
for preprocessing and inference with the Facial Expression Recognition model.CMakeLists.txt
: The related CMakeLists file necessary for building the program.README.md
: The README file has been updated to include information about this new demo.The demo offers two modes of inference: real-time using the camera or processing a static image.
The coding style in
demo.cpp
aligns with the conventions used in other demos and follows the structure of the correspondingdemo.py
. Notably, I opted to utilize theestimateAffine2D
function from the OpenCV library instead of reimplementing a similar mechanism, as was done in the Python version.Testing
The program has been tested both with a single person and with multiple people at the same time.
Here are some screenshots:
Single Person from the cam
Multi-person from static image
Build & Run