在 04-03-2019 10:01 PM
我用的标准的生产消费模型,由于采集速度比较快,图像采集到后入栈,之后出栈处理,但我发现不管列队中有多少个元素,出栈的图像都是当前采集的图像,列队中并未有之前的图像。之后我故意降低处理速度发现只有列队中元素数量增加内存并未增加,不清楚这是怎么一个问题。
在 04-11-2019 08:11 PM
就是入栈的所以图像在出栈的时候都是当前出栈这一时刻相机采集到的图像,并不是入栈时候的图像。
IMAQ Create创建的图像是引用,也就是内存地址。所有入这个引用的图像,都是存入引用对应的内存地址。有新图像时,将覆盖旧的图像。所以,无论你队列增加多少,都是最新的图像为准。要想队列中有多个图像,那你就要创建多个不同名的图像引用,然后将不同的图像放到不同的引用(也就是内存地址中)。
采集速度快于处理速度,不建议使用图像入队列方式,直接采集图像、处理图像这样串行更合理一些。即使你创建了N多个图像引用,如果没有超出LV内存限制,那当所有的引用都被占用后,新图像也是会占用原图像的,而如果动态创建新的引用,那也总会占满所有内存而导致程序崩溃。而且因为图像通常比较大,占内存。这个过程不需要太长时间。
在 05-05-2023 02:07 AM
建議使用 functional global variable(FGV),採集到的圖一一存入FGV,另一迴圈一張圖一張圖處理
如果採集與處理速度差太多, 儲存圖片的buffer要大一點, 並在程式中監測目前存在buffer中圖片的數量,避免爆掉