Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Face Detection


Mroczeks

Rekomendowane odpowiedzi

Opublikowano

c-logo.png

Witajcie.

 

szperając po komputerze odgrzebałem mój stary projekt który pisałem z nudów,

 

program przechwytuje obraz z kamery, analizuje obraz w poszukiwaniu pasujących wzorców (w tym wypadku twarzy) i zakreśla wszystkie znalezione w prostokąty.

 

nie posiadam screenów,gdyż jak wcześniej wspomniałem pisałem go kilka miechów temu.

z racji tego iż powróciłem do C++ na początek postanowiłem udostępnić kilka projektów.

 

skrawek kodu ; 

#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <string>
#include <iostream>

using namespace cv;
using namespace std;

string face_cascade_name = "haarcascade_frontalface_alt.xml";    
CascadeClassifier face_cascade;                         
string window_name = "Hello Face !";

void detectFace( Mat img );

int main( int argc, char** argv )
{
	VideoCapture capture = VideoCapture(0);
    Mat img;                                            
    if( !face_cascade.load( face_cascade_name ) )        
    {
        cout << "Nie znaleziono pliku " << face_cascade_name << ".";
        return -2;
    }
    namedWindow(window_name, CV_WINDOW_AUTOSIZE);    
	while(waitKey(20) != 27)
	{
		capture >> img;
		imshow(window_name, img);
		//detectFace(img);
	}
    waitKey(0);                                        
    return 0;
}

void detectFace( Mat img )
{
    vector<Rect> faces;                            
    Mat img_gray;                               

    cvtColor(img, img_gray,  CV_BGR2GRAY );            
    //equalizeHist(img_gray, img_gray);                   

    face_cascade.detectMultiScale(img_gray, faces, 1.1, 3, 0|CV_HAAR_SCALE_IMAGE, Size(50, 50) );
    for( unsigned i = 0; i < faces.size(); i++ )
    {
        Rect rect_face( faces[i] );    
        //ellipse( img, center, Size( faces[i].width*0.5, faces[i].height*0.5), 0, 0, 360, Scalar( 255, 120, 12 ), 2, 2, 0 );
        rectangle(img, rect_face, Scalar( 120, 5, 86 ), 2, 2, 0  );
    }
    imshow(window_name, img);                        
} 

Zapraszam was do zasugerowania zmian w tym projekcie.. :)

 

Jeżeli ktoś by chciał otrzymać garść informacji na temat linijek kodu,'co za co odpowiada ' zachęcam do napisania pod tematem ;-)

Opublikowano

Proponuję sformatować kod, pomyśleć nad lepszym rozplanowaniem kodu (aktualnie funkcja robi zupełnie co innego niż sugeruje nazwa), ogarnąć te magiczne liczby, nie korzystać ze zmiennych globalnych.

Na razie to robi za antyprzykład.

Opublikowano

Jest to tylko skrawek mojego starego projektu więc nie wiem co mnie skłoniło do udostępnienia go publicznie.

Jak dam radę przedstawię cały projekt,dziękuję ci sopel za wypowiedzenie się w tym temacie :)

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...