2017-07-13 198 views
1

我想製作面部識別系統。現在,我試圖運行相機,但是我很難進入相機。這裏是我的代碼:使用Emgu CV運行相機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(); 
    }   
} 

這是在timer.Interval = new TimeSpan(0, 0, 0, 0, 1);的錯誤。

以下是錯誤:

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

回答

2

Timer.Interval PropertyDouble類型,而不是一個Timespan的屬性。

這裏的屬性的定義:

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

設置間隔爲1秒(1000毫秒),設定這樣的:

timer.Interval = 1000; 

或者在你的榜樣,在1毫秒:

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

或者你可以嘗試

timer.Interval = 1; // 1ms 

你不需要刷新相機各1毫秒我不認爲你的相機有那麼多的FPS 所以30ms的將是你的情況 精做嘗試

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

儘管您的答案在技術上是正確的,但我沒有看到使用創建結構來獲得毫秒。 – Abbas

+1

你說得對,實際上他不需要使用TimeSpan。 我只是寫了它,讓他明白,如果他想給這個間隔的值,他需要使用TotalMiliseconds屬性來轉換它 – Esperadoce

0

答案很簡單, 所有你需要做的就是

設置間隔爲1秒(1000毫秒),設定這樣的:

timer.Interval = 1000;