Dans le cadre d'un projet pour mes études, je dois détecter des véhicules dans un manège.
J'ai réussi à obtenir une détection de véhicule, mais mon programme rame terriblement,
et je pense que cela peut venir des valeurs que j'ai passé en paramètre.
Mais le problème c'est que je n'ai pas compris le rôle de certaines valeurs. La fonction utilisé est detectMultiScale.
Les valeurs en questions sont celles entre detect et Size.
Voici le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
    CascadeClassifier car;  
    car.load("../camera/cars3.xml");  
    IplImage* img =  cvLoadImage("../camera/image_cam.jpg");  
    Mat frame(img);  
    std::vector<Rect> detect;  
    Mat frame_gray;  
    cvtColor( frame, frame_gray, CV_BGR2GRAY );   
    equalizeHist( frame_gray, frame_gray );  
 
    car.detectMultiScale( frame_gray, detect, 3,2,0,Size(1,1),Size(1000,1000)); // 1.05,3,0,(10,10),(800,800)  
    for( size_t i = 0; i < detect.size(); i++ )  
    {  
           rectangle(frame, detect[i], Scalar(0,50,0), 2);       
    }
J'ai aussi une question sur les traitements à appliquer sur l'image.
Actuellement je mets juste l'image en niveau de gris et j'améliore le contraste.
J'ai essayé plusieurs filtres pour distinguer les contours (Canny, Sobel, Laplace ) , mais je n'en ai pas trouvé qui me permettait d'améliorer la détection.
Est-ce que vous connaissez un filtre qui fonctionne correctement avec la détection de contour ?

Merci d'avance.