2012-03-16 13 views
2

私は、1GBのメモリを搭載したフレームグラバーinspecta-5、高速度カメラ「EoSens拡張モード、640×480,1869fps、10×8タップ」も使用しています。私はグラバーをコーディングし、カメラを制御するのが初めてです。 Inspecta-5グラバーは、要求されたフレーム数をカレアからグラバーに変更したり、グラバーからメインメモリーに変更するなど、さまざまなオプションを提供します。また、私はカレアリンクを使ってカメラに信号を送り、異なる露出時間を持つことができます。 しかし、私は1000フレーム/秒の速度を得るために何を使用すればよいかわからず、どうすればテストできますか? ReqFrame = 1000 GReqFrame = 1000 カメラからグラバーに1000フレームを転送し、グラバーからメインメモリにそれぞれ1000フレームを転送することを意味します。ソフトウェアプロファイルに従って、ソフトウェアマニュアルに従って を使用してください。 しかし、それは私が1000fpsを持っていることを意味しますか?カメラのfpsを設定する方法は?

fpsを1000に設定するオプションは何ですか?また、どのようにして1秒間に1000フレームを実際につかんだかをテストすることができますか?

ここにグラバーソフトウェアマニュアルへのリンクがあります:mikrotron.de/index.php?de_downloadfiles「Inspecta Level1 API for WinNT/2000/XP」の下にソフトウェアマニュアルがあります。誰かが必要な場合に備えて、ファイル名は "i5-level1-sw_manual_e.pdf"です。

あなたは、フレームをスナップインまたは偶数フレームを保存するために多くの時間を持っていない1,000fpsでは、お客様に

+0

これまでに何を試みましたか?フレームグラバーとカメラAPIへのリンクを提供できますか? – japreiss

+0

ここにグラバーソフトウェアマニュアルへのリンクがあります:http://www.mikrotron.de/index.php?de_downloadfiles「Inspecta Level1 API for WinNT/2000/XP」の下にソフトウェアマニュアルがあります。ファイル名は "i5-level1-sw_manual_e.pdf" – user261002

+0

です。level1 APIですべてのオプションが与えられていることを確認してください。しかし、この種のプログラミングには新しいので、どうやって問題に近づけることができますか。テスト)私は1000fpsを取得する場合は? – user261002

答えて

1

に感謝します。次の例を使用して、推定FPS、キャプチャ、および保存待ち時間を差し込みます。 1,000fpsで合計約8msのレイテンシを持つことができます(なぜ、99.999?私は分かりませんが、実現不可能な理論上のマックスまたは私の古い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以上を維持できないだろうと思っています。私は彼らがバーストでそれをやり遂げることさえできていない。 –

+0

ところで、actionSimulator()メソッドの理由は多少の差異(多少の乱雑さや最小/最大範囲など)を投げることができるからです。 – Java42

+0

@MarkRansom爆発の映画を撮ろうとしていなければなりません。3.5秒@ 1Kfpsです。 – Java42

関連する問題