Hi to all,
First of all thanks a lot for reading this post and being able to help.
I am trying to use Imaq Compare Golden Template vi in a for loop.
So I am trying to do the next:
1- I have 3 templates and 1 image inspection.
2- The templates are in the image inspection. So imagen that the image inspection is an image with a big 1 2 3 numbers. So the templates are 1, then 2, and then 3. An for loop has 3 iterations.
3- In each iteration I pass a template, with IMAQ pattern matching vi template is found in an image (getting bounding box) and then do the compare golden template to get the defects (differences between template and image).
I am doing the program based on this example "LabVIEW\examples\Vision\Golden Template Comparison\Golden Template Inspection.vi"
My program is the next (attached as well):
The problem is the next:
· If I do this just for one iteration, code works fine. But the problem is that when i do the next iteration, the defects of before iteration is removed, so always I get the defects of iteration 3 (the last iteration) so I thing that I need to create a image with all defects, so combine "defect image" in every iteration in one. I try to do this with IMAQ add (red circle in image) but it does not work.
Any ideas? Please tell me if I do not explain well.
Thanks a lot.
You're using a shift register with a single buffer. The shift register will only store the last value.
You want to get away from the shift register. Then, you want to allocate three buffers and feed those into your for loop so the first iteration acts on the first buffer, the second on the second, and the third on the third.
That way, each iteration is working in a different space. Otherwise, each iteration will clobber the work done in the prior iteration.
The golden template is working just fine if this works in a single iteration and you get the last template's data with multiple iterations. The problem is the way you're storing your calculations.
Also, using auto-indexing and wiring the [N] isn't a good thing. Just use auto-indexing and let the FOR loop handle how many times it needs to iterate.
Thanks a lot for replying.
I do what you say and now I have the next code:
But as you say, I have now three images (Cam1_PROD_display, Cam1_PROD_display2, Cam1_PROD_display3) with defects drawn in each templates, I mean, defects in template 1 are drawn in Cam1_PROD_display, defects in template 2 are drawn in Cam1_PROD_display2, defects in template 3 are drawn in Cam1_PROD_display3. Something like this:
· Source image is the next (with defects in white):
· Templates are:
Template 1 Template 2 Template3
- And the displays Cam1_PROD_display, Cam1_PROD_display2, Cam1_PROD_display3 show the next in each display (with defects in red):
- But I want just a display which shows all defects in one image like this:
How can I do that with the code that I have?
Thanks a lot