2012-03-16 33 views
2

我正在使用1GB內存的圖像採集卡inspecta-5,也是一款高速攝像頭「EoSens擴展模式,640X480 1869fps,10X8水龍頭」。我是編程抓取器的新手,也是控制攝像頭的新手。 Inspecta-5採集卡爲我提供了不同的選項,例如將請求的幀數從camrea更改爲grabber,並將採集卡的幀數更改爲主存。也可以使用camrea鏈接向相機發送信號,並具有不同的曝光時間。 但我不知道我應該用什麼來獲得每秒1000幀的速率,我該如何測試它? 如果我在攝像機配置文件中設置以下選項: ReqFrame = 1000 GReqFrame = 1000 這意味着將1000幀從攝像機傳輸到抓取器,並且還將1000幀從抓取器傳輸到主存儲器。 但這是否意味着我有1000fps?如何設置一個攝像頭的FPS?

將fps設置爲1000會有什麼選擇?還有我如何測試它,我真的在一秒鐘內抓住了1000幀?

這裏是一個抓取軟件手冊的鏈接:mikrotron.de/index.php?de_downloadfiles你可以在「Inspecta Level1 API for WinNT/2000/XP」部分找到軟件手冊。文件名是「i5-level1-sw_manual_e.pdf」,以防有人需要它。

THANK YOU

+0

到目前爲止您嘗試過什麼?你能提供一個framegrabber和相機API的鏈接嗎? – japreiss 2012-03-16 15:55:50

+0

這裏是獲取軟件手冊的鏈接:http://www.mikrotron.de/index.php?de_downloadfiles您可以在「Inspecta Level1 API for WinNT/2000/XP」部分找到軟件手冊。文件名是「i5-level1-sw_manual_e.pdf」 – user261002 2012-03-16 16:01:42

+0

il sure level1 API給了我所有的選擇,但因爲我是新來的這種編程im不知道我該如何處理這些問題,以及我怎樣才能檢查(測試)如果我得到1000fps? – user261002 2012-03-16 16:05:03

回答

1

在1,000fps你沒有太多的時間來捕捉一個框架,甚至保存的框架。使用以下示例並插入估計的FPS,捕獲並保存延遲。在1000fps時,總共可以有大約.8ms的延遲(爲什麼不是.99999?我不知道 - 這與理論最大或我的舊PC有關)。

public static void main(String args[]) throws Exception { 

    int fps = 1000; 
    float simulationCaptureNowMS = .40f; 
    float simulationSaveNowNowMS = .40f; 

    final long simulationCaptureNowNS = (long)(simulationCaptureNowMS * 1000000.0f); 
    final long simulationSaveNowNowNS = (long)(simulationSaveNowNowMS * 1000000.0f); 
    final long windowNS = (1000*1000000)/fps; 
    final long movieDurationSEC = 2; 
    long dropDeadTimeMS = System.currentTimeMillis() + (1000* movieDurationSEC); 
     while(System.currentTimeMillis() < dropDeadTimeMS){ 
      long startNS = System.nanoTime(); 
      actionSimulator(simulationCaptureNowNS); 
      actionSimulator(simulationSaveNowNowNS); 
      long endNS = System.nanoTime(); 
      long sleepNS = windowNS-(endNS-startNS); 
      if (sleepNS<0) { 
       System.out.println("Data loss. Try again."); 
       System.exit(0); 
      } 
      actionSimulator(sleepNS); 
     } 
     System.out.println("No data loss at "+fps+"fps with interframe latency of "+(simulationCaptureNowMS+simulationSaveNowNowMS)+"ms"); 
}    

private static void actionSimulator(long ns) throws Exception { 
    long d = System.nanoTime()+ns; 
    while(System.nanoTime()<d) Thread.yield(); 
} 
+0

假設它是一個灰度相機,圖像採集卡內存本身可以容納高達3495幀。我認爲任何一臺PC都不會超過每秒300GB。我甚至不確定他們能否突破。 – 2012-03-16 21:27:17

+0

順便說一句,actionSimulator()方法的原因是,你可以拋出一些方差(有點隨機性或最小/最大範圍等)。 – Java42 2012-03-16 21:27:52

+0

@MarkRansom沒多少時間,3.5秒@ 1Kfps - 必須嘗試拍攝爆炸電影。 – Java42 2012-03-16 21:31:19

相關問題