C++ Demo - Facial Expression Recognition#233
Merged
fengyuentau merged 4 commits intoopencv:mainfrom Feb 26, 2024
DaniAffCH:main
Merged
C++ Demo - Facial Expression Recognition#233fengyuentau merged 4 commits intoopencv:mainfrom DaniAffCH:main
fengyuentau merged 4 commits intoopencv:mainfrom
DaniAffCH:main
Conversation
fengyuentau
reviewed
Feb 26, 2024
Member
fengyuentau
left a comment
There was a problem hiding this comment.
Nice and clean 👍 We can proceed to merge after the following minor comments are solved.
Contributor
Author
|
Hi @fengyuentau thank you for your review. I just fixed the minor issues you pointed out. |
fengyuentau
reviewed
Feb 26, 2024
Member
|
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: ***@***.***>
|
fengyuentau
approved these changes
Feb 26, 2024
Member
fengyuentau
left a comment
There was a problem hiding this comment.
👍 Thank you for the contribution!
Member
|
@DaniAffCH Thank you for the contribution. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 classYuNetfor face detection (adapted fromface_detection_yunet/demo.cppto create a stand-alone demo) and a classFERfor 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.cppaligns with the conventions used in other demos and follows the structure of the correspondingdemo.py. Notably, I opted to utilize theestimateAffine2Dfunction 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