hi, 各位先進好:
小弟目前需要寫一個連續寫入與片段資料取出的功能、
由於是影像轉成的資料 隨設定每秒最高有可能到30~60 FPS,
又隨著解析度的不同、每個frame轉出的2D數值陣列有可能是640*480 or 320*240大小、
考慮到之後需要讀出分析的需求、之後龐大的資料量是不可能一次讀完、
所以我需要類似像TDMS格式的快速寫入與隨選片段讀出(例如指定起始點與讀出數量)..
如果可以額外寫入一些環境參數則更好..
我有嘗試用TDMS寫2D陣列 但是我寫的方法似乎完全錯誤..
網路上又幾乎只有1D跟Waveform的寫法可以參考......
請問有沒有相關經驗的大大可以解惑一下?
1. TDMS連續寫2D陣列的正確寫入與讀出寫法?
2. 又或者其他方式可以達到需求?
非常感謝...
這讓我想到一個名詞stream,在ni.com搜尋stream + vision,找到以下範例,但是我沒有實際使用的經驗,程式我也沒有辦法開啟,只能提供給你參考http://zone.ni.com/devzone/cda/epd/p/id/6550
asynchronous_stream_photo.zip
謝謝回應~
這我也開不了 我轉好檔再來TRY 感謝ancle大~!
我目前有用TDMS試寫了存檔…
先把2D double陣列轉1D, 每個channel代表一個frame…
讀寫是正常 但是檔案有夠肥大…
320*240, 60fps (實際上不到)
紀錄10秒左右就快250Mb了… =口=…
今天剛好有看到一篇文章在計畫流量,我把以下公式貼上來備註一下
1.解析度=1920 x 1080
2.顏色取樣深度=24bit(R、G、B各色8bit)
3.每秒幀數=60幀
那麼每秒需要的流量可能是多少?
1920 x 1080 x 24bit x 60=2985984000bit
2985984000bit/8bit/1024/1024=355.957MB
PS.附上2010版本程式,寫入的vi我還是打不開XD
Asynchronous Stream Photo Folder_LV2010.zip
ancle41376.4598148148
1920 x 1080 x 24bit x 60=2985984000bit
2985984000bit/8bit/1024/1024=355.957MB
妖獸… 隨便也爆硬碟…
1T只能錄不到50分鐘…
謝謝ancle大大提供轉檔、
裡面的部分程式碼我正好可以用的到~!!
最主要他也是將mqadx影像轉成2D value array 透過QUEUE寫入TDMS的單一channel~
裡面剛好有示範到如何使用Asynchronous Write, read setup來達到2D資料的轉換與單區塊的資料讀出。
只是沒有辦法直接指定某frame讀出…
必須透過Read Start, ead next等VI做控制讀出區段資料(1D)…
再一塊塊把array拼湊回去(2D)…
我可能必須再研究一下有沒有更直覺有效率的控制方式@@~
謝謝大大分享~