Faster face detection by varying detectMultiScale function parameters

In example 1, a simple face detection code is provided which runs at 1-2 frames per second.

To make it faster, we can modify the parameters to detectMultiScale function to achieve very high frame rate.
Example 2 provides the code for minor optimization of code to make it considerably reducing the size of image for detecting face and remapping the face Region Of Interest (ROI) in the original image.

Here the last two parameters - Size minSize=Size() and Size maxSize=Size() - are adaptively changed to reduce computational complexity. These parameters are responsible for restricting the search window of the function to vary from minimum size(minSize) to maximum size(maxSize) for face detection.

Note : You need  a camera connected, otherwise it will throw an error.

Example 1: (Face detection from Video captured from camera)

--------------
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"

#include <iostream>
#include <stdio.h>

using namespace std;
using namespace cv;

Mat detectFace(Mat src);

int main( )
{
 VideoCapture cap(0);
 namedWindow( "window1", 1 );   

 while(1)
 {
  Mat frame;
  cap >> frame;         
  frame=detectFace(frame);
  
  imshow( "window1", frame );
  // Press 'c' to escape
  if(waitKey(1) == 'c') break;  
 }

 waitKey(0);                  
 return 0;
}

Mat detectFace(Mat image)
{
 // Load Face cascade (.xml file)
 CascadeClassifier face_cascade( "C:/OpenCV243/data/Haarcascades/haarcascade_frontalface_alt2.xml" );

 // Detect faces
 std::vector<Rect> faces;
 face_cascade.detectMultiScale( image, faces, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, Size(30, 30) );

 // Draw circles on the detected faces
 for( int i = 0; i < faces.size(); i++ )
 {
  Point center( faces[i].x + faces[i].width*0.5, faces[i].y + faces[i].height*0.5 );
  ellipse( image, center, Size( faces[i].width*0.5, faces[i].height*0.5), 0, 0, 360, Scalar( 255, 0, 255 ), 4, 8, 0 );
 } 
 return image;
}
--------------

Example 2: (Optimizing the parameters of detectMultiScale for faster operation)

--------------
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"

#include <iostream>
#include <stdio.h>

using namespace std;
using namespace cv;

double min_face_size=20;
double max_face_size=200;

Mat detectFace(Mat src);

int main( )
{
 VideoCapture cap(0);
 namedWindow( "window1", 1 );   

 while(1)
 {
  Mat frame;
  cap >> frame;         
  frame=detectFace(frame);
  
  imshow( "window1", frame );
  // Press 'c' to escape
  if(waitKey(1) == 'c') break;  
 }

 waitKey(0);                  
 return 0;
}

Mat detectFace(Mat image)
{
 // Load Face cascade (.xml file)
 CascadeClassifier face_cascade( "C:/OpenCV243/data/Haarcascades/haarcascade_frontalface_alt2.xml" );

 // Detect faces
 std::vector<Rect> faces;
 
 face_cascade.detectMultiScale( image, faces, 1.2, 2, 0|CV_HAAR_SCALE_IMAGE, Size(min_face_size, min_face_size),Size(max_face_size, max_face_size) );
 
 // Draw circles on the detected faces
 for( int i = 0; i < faces.size(); i++ )
 { 
  min_face_size = faces[0].width*0.8;
  max_face_size = faces[0].width*1.2;
  Point center( faces[i].x + faces[i].width*0.5, faces[i].y + faces[i].height*0.5 );
  ellipse( image, center, Size( faces[i].width*0.5, faces[i].height*0.5), 0, 0, 360, Scalar( 255, 0, 255 ), 4, 8, 0 );
 } 
 return image;
}
--------------


23 comments:

  1. Thank you so much. thank you. But i have one question: How to crop the ellipse area?

    ReplyDelete
    Replies
    1. please visit this page for your answer...
      http://opencvexamples.blogspot.com/2014/02/crop-elliptical-region-from-image.html

      Delete
  2. It works perfect when we need it, so thanks for providing such brief examples.
    http://algorithm-research.weebly.com

    ReplyDelete
  3. Hello! I got the following error message when I run the code:

    OpenCV Error: Assertion failed (axes.width >= 0 && axes.height >= 0 && thickness <= 255 &&
    ilds\master_PackSlave-win32-vc12-shared\opencv\modules\imgproc\src\drawing.cpp, line 1772

    Would you please help me? Thanks so much in advance!

    ReplyDelete
    Replies
    1. here again the whole error message:
      OpenCV Error: Assertion failed (axes.width >= 0 && axes.height >= 0 && thickness <= 255 && 0 <= shift && shift <= XY_SHIFT) in cv::ellipse, file C:\bu
      ilds\master_PackSlave-win32-vc12-shared\opencv\modules\imgproc\src\drawing.cpp, line 1772

      Delete
  4. This comment has been removed by the author.

    ReplyDelete
  5. Thank you so much. thank you. It works perfect, But it is not drawing circles on the detected faces. In my case videos from my webcam.

    ReplyDelete
  6. Thanks but I don't see where you set the ROI, only that you specified the min and max detection size and increased the detection scale a bit.

    ReplyDelete
  7. How fast it is in second?

    ReplyDelete
  8. How to modify parameters if the feature detection is by HOG?

    ReplyDelete
  9. High quality in cleaning It is sure that in the vicinity of cleaning company in Taif we are specialized companies in all types of cleaning operations from the exterior and exposed to dust and weather factors by cars and wind, whether for villas or buildings, hotels and storefronts to the premises and clean and clear the floors شركة تنظيف بالطائف .

    Steam cleaning is very useful in cases of fabrics that are difficult to rub as they are exposed to rapid damage and in the past days before the development occurred in the cleaning operations was placed detergent on the fabrics and leave a period and then remove the dirt and that leaves a kind of problems on the furnishings شركة تنظيف بالبخار بالطائف .

    The best insulation materials are used according to the quality of the place in which the house is located. If you are in a high temperature zone, two types of insulation will be carried out: thermal insulation at the top and bottom شركة عزل اسطح بالطائف

    شركة نقل عفش بالطائف Each house is not without a variety of brushes in the interior and each period wishing to those inside the house in the renovation and transfer of the garbage شركة نقل عفش بمكة .

    When we are exposed to insects in the place should be disposed of immediately and will be easily with an شركة مكافحة حشرات بالطائف we are working to provide serious types of organic pesticides that protect all types of insects .

    ReplyDelete
  10. اصلاح سريع وشامل لاعطال التكييفات الان مع مراكز صيانة تكييفات يونيون اير التى تضمن لكم الحصول علي مستوي احترافي من خدمات صيانة يونيون اير بواسطة فريق متميز من فنيين ومهندسيين الصيانة المتوافرين في فروع شركة يونيون اير لاصلاح وصيانة كافه الاجهزة الكهربائية المعطلة
    http://unionairemaintenance.com

    ReplyDelete
  11. تعمل على توفير كل خدمات عمليات التنظيف شركة تنظيف بالبخار بجدة بالإضافة إلى الخدمات الاخري شركة تنظيف كنب بالبخار بجدة التي تحتاجها ربات البيوت وأصحاب الشركات شركة تنظيف سجاد بالبخار بجدة والعقارات ومن خلال شركتنا المتمزية فى خدمات تنظيف المفروشات شركة تنظيف مجالس بالبخار بجدة بالبخار بافضل الاسعار تعرف على كافة شركة تنظيف بالبخار بمكة الخدمات المتميزة التى نقدمها شركة نقل عفش بمكة اليكن والى كل عملائنا الكرام

    ReplyDelete
  12. شركة نظافة خزانات بمكة تقدم خدمات لا يوجد شركة تنظيف بمكة منشأة لا تحتاج لها حيث أن الخزانات تعد من أهم المحتويات التي تحتاج لها المنشآت المختلفة خاصة شركة مكافحة حشرات بمكة في المملكة العربية السعودية التي تعتمد على المياه الجوفية ومياه الآبار شركة تنظيف خزانات بمكة والعيون وتخزينها في خزانات شركة تنظيف بالبخار بمكة بعد تصفيتها وتنقيتها لذا ظهرت الحاجة الشديدة للاستعانة بشركة متخصصة شركة نقل عفش بمكة يستعين بها مختلف الأشخاص في تنظيف وتعقيم الخزانات لديهم من أجل الحفاظ على المياه نظيفة وغير ملوثة

    ReplyDelete
  13. العمالة الفلبينية معروفة بأنها تتعلم شركة نقل عفش بجدة بسرعة كبيرة وجميع الأعمال التي تسند اليها تخرج جودتها بمستوى عالية فى حين ان مستوى الاجور لها منخفض وعليه فإن الشركة شركة تنظيف بالبخار بجدة تعمل على توفير تلك النوعية شركة تنظيف دكت المكيفات بمكة من العمالة ومن خلال افضل شركة نقل عفش بجده شركة تنظيف دكت المكيفات بجدة عمالة فلبينية سوف يتم الحصول على عمال متفوقين وقادرين شركة تنظيف دكت المكيفات بالطائف على نقل الاثاث بعناية كبيرة من اي مكان حتى الادوار العالية وتتم عملية النقل تبعا للأسلوب الحديث وهي كالتالي :-

    ReplyDelete
  14. توفر شركة تنظيف دبي أفضل خدمات نظافة شركة تنظيف بدبي من خلال خبراء في عالم النظافة شركة تنظيف كنب بدبي لديهم احتراف ومهارة عالية وعلى درجة كبيرة من الأمانة والالتزام لديهم حلول شركة تنظيف عجمان عملية وسريعة لجميع شركة تنظيف بالشارقة مشاكل التنظيف ملتزمون بتلبية شركة تنظيف ابو ظبي رغبات العملاء وتنفيذها وعدم إهدار الوقت

    ReplyDelete
  15. تنظيف المساحات الشاسعة ليس بالأمر الهين شركة تنظيف دبي ولا يقدر عليه فرد واحد أو الخدم الذين قد يتواجدون شركة تنظيف ابو ظبي بالمنشأة حيث أنه يلزم توافر معدات خاصة شركة تنظيف كنب بدبي من أجل التنظيف تساعد شركة تنظيف بالشارقة على تقديم أفضل الخدمات وتعمل على تيسيرها بأسعار لا تعد عبء على من يبحث عن شركة تنظيف عجمان هذه الخدمات لذا تقدم الشركة كافة الخدمات التي تلزم في تنظيف الفلل شركة تنظيف العين بما تحتويه من محتويات وأغراض

    ReplyDelete
  16. ويتميز شركة تنظيف كنب بدبي بانجاز العمل بتقنية شركة تنظيف بدبي وجودة عالية، وفي أسرع وقت شركة تنظيف بالشارقة ،وتحرص شركة تنظيف بالعين بتوفير احدث شركة تنظيف بالعين الأجهزة الكهربائية شركة تنظيف بدبي والمعدات الحديثة اللازمة والمستخدمة في شركة تنظيف بعجمان عمليات التنظيف، وذلك حرصا من الشركة علي توفير شركة تنظيف كنب بدبي ومساعدة عملائها الكرام في القيام بإعمال

    ReplyDelete
  17. يمكنكم اللجوء لتنظيف منازل عجمان إذا شركة تنظيف دبي أصبحتم في حاجة إلى تنظيف المنزل شركة تنظيف عجمان في أي وقت تحددوه أنتم , فقط اتصلوا بتنظيف منازل عجمان شركة تنظيف بالشارقة وسوف يرد عليكم فريق متخصص من خدمة العملاء والذي يحدد معكم المطلوب شركة تنظيف ابو ظبي والوقت المحدد لإتمام تلك المهمة الضرورية وفي أسرع وقت ممكن سوف تجدونها انتهت شركة تنظيف كنب بدبي , فقط انسوا هم الأسعار التي تقلق الجميع في حالة الرغبة في التعامل مع أي شركة نظافة

    ReplyDelete
  18. German Translation Legal Translation services German Translation The German German Translation dubai language has a great influence on the world because Germany plays a vital role in the European Union chinese Translation dubai . Also, the economy of Germany russian translation in dubai encourages the growth Translation services in Dubai of the English Translation dubai German translation industry.

    ReplyDelete
  19. كما يقوم فريق العمل بتنظيف الموكيت حيث أن الموكيت شركة تنظيف بدبي يعتبر من أهم الأشياء التي توجد في المنزل ويتميز بوجود الزخارف المختلفة شركة تنظيف بالعين به، لهذا فإنه يحتاج إلى التنظيف بكل دقة وحرص ويتم هذا من خلال استخدام شركة تنظيف عجمان الماء الفاتر والمنظفات المخصصة للموكيت، أو يتم تنظيفه عن طريق البخار شركة تنظيف كنب بدبي حتى يعطي أفضل النتائج وفي أسرع وقت

    ReplyDelete