Solved! Go to Solution.
Prepare multiple IMAQ images and put the data into the image.
you can retrieve the images at the other end without using queues, the IMAQ images is a reference to the image.
Is there a way to operate directly on the image data in memory, rather than on the reference to the data?
You don't want to do that for performance reasons.
Why not create 1000 images and use a circular buffer system to store the latest acquired image in the "1000 mod i" th element of the array.
This way you don't double up your memory usage.
I would use an array of images, but the queue format is useful to my scheme (I'm streaming images from multiple cameras and want to keep a buffer of the last 1000 images or so from each camera, dropping out frames as new ones are added). Is there a way to operate directly on the image data in memory, rather than on the reference to the data?
What resolution do your cameras have??? Let's assume a fairly low end camera of 640 * 480 pixels with only 8 bit gray. Such a pic takes up "only" ~3MB of memory. multiply this by 1000 and the number of your cameras and you end up running into limits very fast even on modern 64 bit machines with 64 bit OS and 64 bit LabVIEW version (which I'm not sure you are using).
640x480 is approx. 300k per image, not 3MB.
1024*768 is approx. 800k.
As such the memory requirements rise to 300MB in total (800MB for 1024x768), something which is certainly in the doable range assuming the references are cleanly disposed of once they're no longer needed.
I missed the "for each camera" part.
This WILL be a limitng factor. For one camera it would work, but so many images for so many cameras is not really going to work.
Ps I think you'll need to save to disk and have a fairly beefy disk subsystem to be able to keep up with this. You can store the path to the files in an array and delete the elements you replace in your circular buffer. Depending on the frame rates, this will be a huge bottleneck though.
For each Frame you must initial Image space.
You could use something like this:
You must add Camera(s) and AVI initialization. You must add multicamera feature. Stop recording is missing.
!!! Do not forget Dispose Queues and Images !!!