2017-06-01 6 views
0

私は毎秒120フレームの産業用カメラを持っています。それは私のPCとUSB 3.0ケーブルで接続し、フレームを表示するだけで、フレームは120fpsのフレームレートで安定して私のPCに転送されます。しかし、フレームをSSD(M.2 PCIEインターフェイス)にjpeg形式で保存しようとすると、1秒間に30フレームしか保存できません。毎秒120フレームすべてを保存すると、各JPEGファイルは約80KBで、約10MBpsになります。私は自分のSSDをテストしており、データを書き込むために少なくとも100MBpsを持っています。どこが間違っていますか?産業用カメラで撮影した画像をSSDに保存する方法

Btw、カメラによって提供されるAPIはWindows C++ APIであり、キャプチャおよび書き込みプログラムにはVisual studioを使用しています。私が考えることのできる1つの方法は、ある時間の間、画像をメモリに保存してから、画像を取り込み、ディスクに画像をダンプすることです。私のアプリケーションは常にカメラをキャプチャしておく必要があります。 SSDにこれらの画像を保存する方法があれば、私は考えています。私のPCにはi7と32GBのメモリがあります。

+0

WindowsまたはLinuxを実行していますか?何秒間キャプチャする必要がありますか?どのようなプログラミング言語とツールを使用していますか? –

+0

読書(usb経由)と書込み(SSDへ)がシリアルの場合、ボトルネックはあなたの文章です。したがって、1つのスレッドで読み込みを行い、メインスレッドに書き込みます。これによりFPSが改善されるかもしれません – harshkn

+0

マルチコアCPUを使用している場合は、1つのスレッドがフレームをキャプチャし、多分4つのスレッドがフレームを処理していると考えられます。起動時に4つの処理スレッドを作成し、フレームが到着するとフレーム1、スレッド2にフレーム2、スレッド3にフレーム3、スレッド4にフレーム4、スレッド1にフレーム5 ...スレッドは、JPEGに変換するのに4倍の時間を要し、別のフレームを処理するために呼び出される前に書き込むことになります。 –

答えて

1

ボトルネックはI/Oではなく、PC上のSDKで行われるrawからjpegに変換する処理です。 rawをリアルタイムで保存し、jpegをオフラインに変換してみてください。

関連する問題