Machine Vision

cancel
Showing results for 
Search instead for 
Did you mean: 

Troubles with Finite Image Acquistion with Inline Processing (Vis. Acq. Exp. VI)

Hi,

(I am using is a WebCam). My Problem is as follows: I am designing a robot that can watch a game screen (RockBand) and play drums. Now, the robot definitely needs to continuously acquire images and at the same time process them; since only than can he hit the drum at the required time. Now I can make my processing work on a image from a file but I have been trying and trying and have not been able to learn how to correctly acquire images for my specific purpose. I am trying to use Vision Acquisition Express VI but am really confused how to use it correctly. I would really appreciate any help I can get.

So I have currently attached a file in which I am using (it only does the image acquisition). What I am trying to do is acquire 3 images and then display each one. (I actually would prefer to display them one after other as acquired, but that did not work). I am not sure what goes wrong with the VI after the first image is acquired. Could you please tell me what exactly is wrong with the VI.

PS: As I am not very familiar with LabView or NI Vision; and I would very much appreciate if you could tell me the exact steps I could do to perform the image acquisition I need.

 

Thanks very much in advance.

0 Kudos
Message 1 of 7
(2,797 Views)
Hey Shahaniya,

from your VI it looks like you are confusing arrays and clusters.
What you get from your Vision Acquisition Express VI is an ARRAY of images.
You can set the number of images you want inside the express vi.
What you need to display all images is an ARRAY of image displays.
On the front panel, place an empty array container from the array palette.
Then take an image display from the Vision palette and drag it inside the array container.
In the block diagram wire that array of displays directly to what comes out from "All images out".
No need for clusters here.
Hope this helps.

David
0 Kudos
Message 2 of 7
(2,785 Views)

Thanks David. I attempted what you told me, but it still does not improve the situation much. First, I could not find anything by the name of a array container and hence instead used the control called "Array" under Classic >> Classic Array, Matrix & Cluster. Secondly, I placed the image display ctl in this array and then did what you told. However, my VI still only captures the first image correctly, after that all images are either black or are not captured. Could you please provide me some more help.

 

Thanks in advance.

 

shahniya 

0 Kudos
Message 3 of 7
(2,773 Views)

Hi Shahniya,

take a look at the coooking recipe I made for you. It takes only 10 steps to get the images displayed 😉

Good Luck,

David

0 Kudos
Message 4 of 7
(2,760 Views)

Hi David,

 

Thanks a lot for your generous help, I really appreciate it. I tried what you said, it took me  a while, as my computer had crashed. However, you see when you told me in your document that I configure the VI by first selecting the device and next selecting the acquistion type (finite acquistion with inline processing (5 images)). I followed the steps exactly; however, when I clicked "Next" and then clicked "test", I browsed through the images and only the first image was clear. The rest of the images were all dark, in one or two I could see a faint outline of what I was capturing but they were way too dark. Would you happen to know why that is. I was capturing at a low rate of 9 frames/second. Also do you happen to know if a Ring Vi works with a USB webcam. That is more pertinent to my application than sequence; from what  I have researched so far.

 

Thanks again for the help you have extended.

Niyati Shah

 

0 Kudos
Message 5 of 7
(2,738 Views)

Hey Niyati,

 

Are your images still dark when you run the code generated by the Vision Assistant Express VI, or are they just dark when you are testing? Is it repeatable, if you continue to run your VI, is the first image always clear and subsequent ones always dark? Is their anything askew with the lighting of the object you are viewing? Also, you should be able to do a ring acquisition. To do this in the lower level code, you would use the IMAQdx Configure Acquisition.vi to set up the acquisition and simply create multiply buffers. Check out this Tutorial for some more information what ring acquisitions. The tutorial is written for use with IMAQ, and you would be using IMAQdx with your USB camera, but the points about what a ring acquisition is are still valid.

Hope this helps.
-Ben

WaterlooLabs
0 Kudos
Message 6 of 7
(2,728 Views)

Just to clarify... IMAQdx currently only supports a Grab API---there is no explicit Extract and Release of images in the ring like IMAQ exposes for traditional framegrabbers. The buffer ring is managed internally by IMAQdx and cannot be directly accessed. The user can control the number of images that the internal ring contains though.

 

Eric

0 Kudos
Message 7 of 7
(2,725 Views)