|
NI-IMAQ是如何知道要分配多少記憶體給影像擷取?而這些影像的Buffer在記憶體中會被相鄰被配置嗎?
IMAQ Create VI會建立一個指標去指向一個未初始化且長度為0的IMAQ Buffer。而實際上的影像擷取用的記憶體配置則是要利用IMAQ Configure Buffer VI。一般在low level的程式撰寫中呼叫IMAQ Configure Buffer VI,會置於IMAQ Init VI去設定擷取卡與實際影像擷取之間。而IMAQ Configure Buffer VI會根據卡片設定與相機格式去調整IMAQ Buffer的大小。如果要使用高階的IMAQ VI (如IMAQ Snap, IMAQ Grab Setup, 或是 IMAQ Sequence),則IMAQ Configure Buffer VI會在高階VI內部被呼叫。也因此Buffer相關設定也會在IMAQ ReadFile VI內部完成。
在LabVIEW中,影像reference資料型態包含了指標去指向LabVIEW內的架構,而非Buffer本身。為了取用真實的Buffer,IMAQ GetImagePixelPtr可以回傳指向影像記憶體的位置資訊。影像的數值會是由左上至右下的順序儲存在記憶體中。
舉例來說,第0行第0列的像素值會在影像的最左上角。線上協助的GetImagePixelPtr VI說明也包含了影像資料在記憶體中的架構。這個VI會回傳所有可能會需要的影像資料 (舉例來說,需要把影像傳遞給DLL的狀況)
|