2017-07-13 3 views
1

Je veux faire un système de reconnaissance faciale. Maintenant, j'essaie de faire fonctionner la caméra mais j'ai du mal à accéder à la caméra. Voici mon code:Exécution de la caméra en utilisant Emgu CV

public partial class Camera : Form 
{ 
    private Capture capture; 
    private HaarCascade haarCascade; 
    Timer timer; 

    public Camera() 
    { 
     InitializeComponent(); 
    } 

    private void pictureBox1_Click(object sender, EventArgs e) 
    { 
     capture = new Capture(); 
     haarCascade = new HaarCascade(@"haarcascade_frontalface_alt_tree.xml"); 
     timer = new Timer(); 
     timer.Tick += new EventHandler(timer1_Tick); 
     timer.Interval = new TimeSpan(0, 0, 0, 0, 1); 
     timer.Start(); 
    }   
} 

Il y a une erreur dans timer.Interval = new TimeSpan(0, 0, 0, 0, 1);.

Voici l'erreur:

Severity Code Description Project File Line Suppression State Error CS0029 Cannot implicitly convert type 'System.TimeSpan' to 'int' Attendance_Marking_System c:\users\redpranger\documents\visual studio 2017\Projects\Attendance_Marking_System\Attendance_Marking_System\Camera.cs 34 Active

Répondre

2

Le Timer.Interval Property est une propriété de type Double, pas Timespan.

est ici la définition de la propriété:

Gets or sets the interval, expressed in milliseconds, at which to raise the Elapsed event.

Pour définir l'intervalle 1 seconde (1000 millisecondes), définissez comme ceci:

timer.Interval = 1000; 

Ou dans votre exemple, à 1 milliseconde :

timer.Interval = 1; 
1
timer.Interval = new TimeSpan(0, 0, 0, 0, 1).TotalMilliseconds; 

ou vous pouvez essayer

timer.Interval = 1; // 1ms 

vous n'avez pas besoin de rafraîchir la caméra à chaque 1ms je ne pense pas que votre appareil photo a que beaucoup fps si 30ms serait bien dans votre cas alors essayez

timer.Interval = 30; // for 30 ms 
+0

Bien que votre réponse soit techniquement correcte, je ne vois pas l'utilité de créer une structure juste pour obtenir les millisecondes. – Abbas

+1

vous avez raison dans le cas contraire, il n'a pas besoin d'utiliser TimeSpan. Je viens de l'écrire pour lui faire comprendre que s'il veut donner la valeur à intervalle, il doit le convertir en utilisant la propriété TotalMiliseconds – Esperadoce

0

la réponse est simple, tout ce que vous avez à faire est

pour définir l'intervalle 1 seconde (1000 millisecondes), définissez comme ceci:

timer.Interval = 1000;