IMAQ image updates

Hi,
I have a strange problem I have been unable to solve.  I create 2 images to be displayed on the front panel using the IMAQ create image.  I then read in one image as a reference image and display it on the front panel.  My vi then waits until a folder is updated with a new picture and also displays the new picture on the front panel.  While the vi is running, if my mouse moves over the reference image, the image changes to the current imaging being displayed from the updatd folder.  The reference image is displayed on the front panel in a sequence before the program enters a while loop waiting for the updated images to display.  The only way I was able to prevent the reference image from changing was to use the Dispose vi after displaying the reference image to the screen.  Is there any kind of "lock command" or mouse event command I can use to prevent the reference image from being updated when the mouse is moved over it?
Adam

Hi Adam,
Thanks for posting on the NI forums.  Will you post your code so that I can try and reproduce the problem on my end?
Thanks,
Maclean G.
National Instruments
Applications Engineer

Similar Messages

  • Using IMAQ Image controls in LabVIEW steps

    Hi guys
    So far, I was using TestStand 4.0 together with LabVIEW 8.5 and Vision Development Module 8.5 with no problems. Recently, I've updated to LV 8.6 and VDM 8.6. I've started to experience weird problems when using LabVIEW steps with inputs/outputs containing IMAQ Image controls. When I try to click on such a step in seq editor, or try to insert a new step into the sequence, the step initialization takes a very long time (tens of seconds) or freezes completely. I've also tried to upgrade TS to version 4.1, but no difference. Also, my colleague experiences very similar symptoms on the same software setup. The only difference is that on his machine, it takes only a few seconds when you click on the vision step. However, the steps not containing an IMAQ Image control behave normally, i.e. you can't experience any "initialization time" when clicking on them in the sequence.
    To illustrate, I'm attaching a simple VI containing nothing more that a single IMAQ Image control. If you don't link it to the connector pane, the VI works fine when inserted as a TS step. If the IMAQ Image control is linked to the connector pane, TS freezes when inserting such a step.
    Vladimir
    Solved!
    Go to Solution.
    Attachments:
    ft5.vi ‏5 KB

    Hello Vladimir,
    Thank you for posting on the NI Discussion Forums. This was reported to R&D (#123249) for further investigation. The only workaround I can offer for now is to work with the VIs from version 8.5 of LabVIEW if they have vision controls linked to the connector pane. Thanks for the feedback!
    Chris_G
    Sr Test Engineer
    Medtronic, Inc.

  • What datatype should i use to store imaq image in sql database?

    Hi there i am thinking of saving the imaq image into database for retrieval in my website so that it's like a stream but i don't like what datatype does labview store the image as.

    You have two options for storing images in a relational database:
    A.  Don't put it in a database.  Store it as a file, and store the pointer int he DB (as mentioned above).
    B.  Store it as a blob datatype.  See here for more info.

  • How can I use or convert a imaq image to plot images back on waveform graph

    Hi
    I am currently opening and manipulating (rotate and resize) a PNG image using IMAQ Vision in LabView 8.2.1 This works well and I can display the Image on the front panel using a IMAQ Image Control.
    In addition to this I would now like to display the image as a background on waveformgraph. I can do this with the original PNG file by reading it and then flatten it to a pixmap ie make it a Picture but this is of little use as I need to use the manipulated IMAQ image.
    Therefor I would like to know how to convert the manipulted IMAQ Image to right Picture Format (without resaving) in order to use it on the PlotImages.Back property node of a wavefrom graph.
    I very much welcome your suggestions as I feel it should be easy yet can not seem to solve it. Thank you for your time!!!

    Hi Randall
    Apologies for replying somewhat late but I have been out of the office for a few days.
    Your suggestions and code helped me greatly and led to solving my query so thank you for that.
    There is one more thing (well many many more but I will place new posts for those  however that you might be able to answer for me.
    Following your suggestion to use the image to array function I searched through more examples and found the code that did exactly what I wanted to do. Please see attached.
    In this code a For loop is used to add 65793 to the color table. It works very well but I do not know why it is used exactly. Can you exlplain? I also realize I never made it clear that I use grayscale PNG files rather then color images.
    Thanks again for your excellent help, it is much appreciated.
    Attachments:
    IMAQ_8-bit_to_picture v1.vi ‏15 KB
    Test Image.png ‏42 KB

  • Why does moving the mouse over an IMAQ image display slow the GUI down so much?

    I have a large application with several vi's running simultaneously under labview 8.6.1.  When I mouse over an image display control in one of the vi's, everything slows down a shocking amount in all the other vi's.  The windows task manager does not show a large increase in CPU use.  My pc is has a quad cpu with 4GB of RAM, and the CPU and memory loads do not appear to be terribly taxing to the system.  However, many of my vi's apparently come almost to a standstill if I just move the mouse in a circle around my image control.
    This looks like it is largely a GUI display issue.  If I make a new vi and put a while loop in it that only displays the iteration loop number to an indicator, I can see the iterating occurring, then stopping totally when I mouse inside the image display control.  When I stop moving the mouse inside the control, or when I move it outside the control, the interation loop number jumps up, as if it had been incrementing behind the scenes the whole time.  So only display of the interating was halted.
    This problem occurs even if the vi with the image control is not executing.  If the vi with the image control is open but not running, and I mouse over the image on it, the other guis all come to a screeching halt.
    Does mousing in the image display control really utterly crush all other guis in all other labview windows?  Is this an issue inherent to the image display control?  If so, is there anything I can do about this? 
    Also, this issue is not entirely limited to display.  I started looking at it in greater detail because this issue also exposed what I think is a race condition in my code.  I have a vi that acquires an image from a ccd and puts it into an IMAQ image.ctl.  This image then gets passed up to a vi up the call chain, and is put on a queue and sent over to be de-queued by a vi that has the image display control.  Here's the kicker:  when I mouse over the image display control, the image successfully gets acquired inside the subvi, and if I probe the wire leading to the output IMAQ image display.ctl, I see the image.  If I simultaneously probe the wire coming out of the subvi one level up the call chain, the image gets lost about half the time.  This only happens if I am mousing in the image display control IN A TOTALLY DIFFERENT AND SEPARATE VI.  If I bump up the priority of the ccd image acquisition vi to 'highest priority', the problem only happens about 1% of the time, and I really have to mouse around to make it happen.  Still, it's disturbing that mousing in the GUI in one window results in a failure of a separate subvi to simply pass an image up the call chain.  I understand that IMAQ images are referenced rather than passed by value, but I don't see why there should be a failure to pass the image up the call chain.  I've looked for a race condition, but can't find one.
    Eric

    I have finally been able to replicate the behavior that you are seeing on another computer once the image was large enough.  Here are a few notes about this behavior:
    First. The UI only slows down when the images are large, 16 bit images.  The reason why this is unique to 16 bit images is that they can only be displayed on the front panel as 8 bit images.  The workaround that Weiyuan suggested to change the 16 bit display mapping hints towards the root of the problem...that any time a mouse runs over the indicator, Windows asks the entire image to re-draw (having a separate indicator overlapping the image will create the same behavior).  With a 16 bit image, not only does the image have to re-draw on the screen but the 16 bit pixels need to be mapped to 8 bits.  When setting the 16 bit display mapping to Full Dynamic, this requires mor computation/pixel than 90% dynamic or one of the other mapping schemes.
    This is expected behavior if your program is running and you're trying to display a large 16 bit image.  To fix this behavior there are a couple options:
    Change the 16 bit display mapping to something other than full dynamic.  You can choose which 8 bits to display or if you want to map the bits. 
    Resize the image just for viewing purposes on your front panel (since you aren't going to view every single pixel of you image on the screen). You can use the IMAQ Resample.vi to do this.  This will allow you to take your 1500x1500 pixel image and only display a 500x500 pixel version.
    If you are interested in viewing small details of the large image, consider just displaying a smaller region of interest at a time.
    Let me know if any of these solutions work for you.  Good luck on your application.
    Zach C.
    Field Engineer
    Greater Los Angeles

  • IMAQ image out- what's the best way?

    Hello forum,
    I'm developing an interface to acquire a square image from an NI-DAQmx PCI 6221 on LabVIEW 7.0 and Windows XP. At present I am simply collecting my information from a physical sine wave generator on the bench, but eventually this will be used to process images from a CARS microscope.
    My problem is that I am trying to figure out a user-friendly way of "buffering" all previously acquired images in the session, and then choosing one several of them to save as an uncompressed BMP. At the moment I am using two image displays; one for the whole image overview (picture indicator) and one to pan around and zoom on fine details (IMAQ image indicator). The IMAQ image indicator is also outputting to an IMAQ browser window, which I have modified based on the Browser Example.vi which ships with LV. However, there are several difficulties with this method.
    Firstly, I'm not sure how to select an indexed image from the browser itself to save; the only way I can think of would end up wiring the IMAQ image out to the BMP writing VI, but that would only save the current image, and not necessarily the one the user wants.
    Secondly, I haven't quite got the hang of combining case structures, event structures and while loops yet, so there's a very specific order things have to be done in or the program hangs, (e.g.. you must press the buttons: Acquisition - Unlock Browser - Stop in that order, nothing else works properly), and I'm pretty sure I've set the browser up wrong because every time I finish with the acquisition window, an error message appears.
    Thirdly, it would be nice if I could hide the browser window until I've finished with the other window, but I can't seem to get IMAQ windshow to do that. I have boolean constants wired to Hide/Show and Set/Get but no matter what combination of false and true I use, the window appears anyway.
    I will attach the VI and subVIs to this post in a zipped folder, and would appreciate any help you could give me. General constructive criticism on my wiring, methods, Rude Goldbergs, etc, would also be appreciated if anyone has the time, as I'm still pretty new to LabVIEW.
    Thanks in advance!
    LabVIEW 2013, Windows 7
    He who asks the question is a fool for five minutes; he who does not ask the question remains a fool forever.
    Attachments:
    Image Acquisition VI 0.4.zip ‏187 KB

    DH is right about the difficulty in removing wind noise, but hoping it might prove useful, here is a hint I copied from a thread somewhere in this discussion list.
    How to export audio from Final Cut Express to (free) Audacity and back again after noise removal.
    1) download Audacity
    2) in fce timeline, place in and out points at beginning and end of audio
    3) select that audio clip, and that clip only
    4)file-export-using quicktime conversion, in the pop-up box format as aiff, 44.1kwh 16bit stereo
    5)open audacity, make sure box in bottom left corner says 44100
    6)file-import-audio
    7)go to file and select it, click choose
    8) select part of audio with just wind noise, then go to effects noise removal, click get noise profile etc.
    9)when satisfied, click file-export, click ok, close audacity
    10)Open fce, drag your audio clip to the right hand end of clip. Move playhead to the in marking. Go to File-import
    select your audio file, choose.
    11) file appears in fce browser. Drag from there to overwrite and the audio goes into the track, perfectly synced
    My apologies to whoever posted this hint, I tried to find the name to give credit. This really does work to get rid of room hum, but wind noise is a really different beast and this may not help. I suspect, as DH says, it will remove too much of the audio you want to keep. Hugh

  • "IMAQ image to string" difference in 8.2 and 8.5

    My basic aim is to capture image from one computer and then send to another in LAN using TCP/IP. I have LabVIEW 8.5 and LabVIEW vision 8.5 in one and LabVIEW 8.2 and LabVIEW vision 8.2 in another. I capture an image in the computer whear I have installed 8.2 version of both and then flattened using " IMAQ image to string" and then sent it to computer using TCP/IP to computer with 8.5 version but the image is not displayed whearas when i do send that from 8.5 to 8.2 ( Capture the image in the computer with 8.2 and then flatten it to string and send it to the computer with 8.5 and display) , it works. Is it beacuse of different version of LabVIEW vision?

    Hi aman_bajra,
    You should be able to pass the image from one computer to another using TCP/IP, even if the computers have different versions of the Vision Development Module installed.  I tested this here and I had no difficulty sending the image from a computer running Vision 8.5 in LabVIEW 8.5 to a computer running Vision 8.2 in LabVIEW 8.2, or vice versa.  FYI, I used the normal Flatten to String node, not the IMAQ Image to String VI.  I have included the VIs I used to do this below.  Please give these a try and reply back if you are still unable to send your image properly.  Thanks.
    Rishee B.
    Applications Engineer
    National Instruments
    Message Edited by risheeb on 03-12-2008 12:24 PM
    Attachments:
    TCPIP Receive Image3.vi ‏45 KB
    TCPIP Send Image1.vi ‏74 KB

  • Flickering problem with live viewing with IMAQ Image Display

    Hi everyone,
    I am trying to write a program to do live imaging with Andor camera. I am using some examples from Andor. The images are acquired in sequence and send into IMAQ Image Display and also Intensity Graph. There is minimal flickering issue in the Intensity Graph but there is very bad flickering problem in IMAQ Image Display. Perhaps I misunderstand how to optimize the vision tools. Does anyone know how to overcome this issue? I have attached the code that I am testing. Thanks in advance.
    Best regards,
    Han Yen
    Solved!
    Go to Solution.
    Attachments:
    iXonRTA_live_0.0.1.vi ‏70 KB

    You can use Vision Assistant to test our vision functions. Vision Assistant is really meant to prototype - it does not have all teh functionality of Vision Development Module and is not as flexible as we don't allow you access to all the settings for every function.
    I recommend starting in Vision Assistant and then porting over to LabVIEW or C (whatever you are most comfortable with)...this is built-in functionality. There is nothing wrong with using Vision Assistant to do live imaging, just that you run into limitations and you will only be able to use this code on computers that have Vision Assistant.
    Hope this helps.
    --Michelle
    Instrument Control R&D
    National Instruments
    Instrument Control
    Machine Vision

  • Handling IMAQ Images in the TestStand Opeator Interface

    I'm modifying the LabVIEW Operator Interface to display images from IMAQ VIs on the front panel. I've got it to work a number of ways, but never if I compile the interface into an executable.
    I've tried using the "IMAQ Image Cluter to Image Dataype" and "IMAQ Image Datatype to Image Cluster" vi's to store and pass references to the Operator Inteface. It works in development mode but not when built. I understand this won't work as the reference is local to the adapter you are using so I abandoned that.
    I've tried storing the Image into a global VI and then reading that global VI in the interface for display. I've made sure to call the Global VI dynamically in the operator interface so I'm using the same VI and not one compiled into the executable. It works in development mode but not compiled. Don't know why.
    Another method I tried was to use the "Flatten To String" and "Unflatten From String" functions to store the image in a local string (as a binary string) in the sequence. I then tried accessing the local with the "ProperyObject" Method "GetValString" in the Operator Interface VI. When I try this I get an error and the development system shuts down. I know I'm access the local correctly as I have accessed other locals from the sequence in this manner.
    Any ideas why one or both of the last two methods are not working for me? Is there any other methods that would work? How about sending the image to a common dll? Can you store an image or image reference in a dll so any platform could access it?
    Thanks,
    Dave

    Thanks for the tip about trying another data type. I tried an numeric array and it did not work as well. But now I could see what is happening. When the GetValString reads the local it does not interpret the escape code '\'. i.e. if the string contains '\00' it ends up as '5C 30 30'. The Unflatten From String vi is expecting hex 00 and an error occures.
    I wrote a crude VI to look for the escape code and convert what follows to pure hex. It first converts the string to byte array, interprets each byte, creates a new hex array then converts it back to a string. The good news is that it works for numeric arrays, and I was able to read the array values in the Operator Interface by reading the flattened data from the sequence. However, when I applied the VI to the Image Flattened data, the array was 2,295,879 elements long and my VI was way too slow to convert the whote image.
    Is there a fast way of converting the string to pure hex values?
    Don't know why my VI didn't show up. I'm now trying to attach an image of the block diagram.
    Attachments:
    FlattendImagefromSequence.jpg ‏46 KB

  • Imaq windraw vs. Imaq image display

    Until recently, i've been using the imaq windraw vi to display the real time images i capture. Now I am trying to use the imaq image display vi instead...the only problem is that it slows my application way down. Does anyone know why it would slow the application down so much? With windraw i processed about 900 images a minute, but with the image display i only process half that many. Does it have something to do with the image display being part of the GUI??

    Most likely the slow down does have to do with the image being displayed as part of the GUI. There are some things that you can do to increase performance. Take a look at this KB for some good suggestions.

  • Imaq image to word report

    I have IMAQ image and I want to generate report ald place this image in table cell:
    Can I do that without safing image on disk?

    Hi,
     I don't believe there is another way, because you have to specify the path to the file.
    What you can do is to create programmatically and delete the file at the end of your program execution.
    Best Regards,
    I.R.

  • Adding an "IMAQ Image.ctl" to the "Display State.ctl" of an XControl prevents LabVIEW from creating a probe of "Display State.ctl"

    I am working on an extended IMAQ Display control using LabVIEWs XControl capabilities.
    I need a copy of the original image passed to add some overlays which must not affect the original image. To achieve this I am creating a backup image in the "Init.vi" and deleting it in the "Uninit.vi". I am storing the reference of this image in the "Display State.ctl" which is part of every XControl.
    As soon as I am adding an "IMAQ Image.ctl" to the Display State cluster, it is no longer possible to generate a probe of the Display State cluster for debugging purposses. I am always getting the message: "Failed to load or create probe."
    Deleting the "IMAQ Image.ctl" from the cluster makes the probe working again.
    Is it a bug or am I doing something wrong?
    I am working with LabVIEW 8.5 and Vision 8.5.
    Regards
    Ingo Bartsch

    Hello Mr. Bartsch,
    is it possible for you to post a small example to reproduce the behaviour? It would be helpful to get a description in which way you use the typedef files.
    I found a example/knowledge base where some informations were included to XControl and LV but not with Vision.
    http://digital.ni.com/public.nsf/allkb/1DC1ADD2A136DA298625712C00635758?OpenDocument
    Best wishes
    Jan Kniewasser
    Jan Kniewasser | Applications Engineer | Tel.: +49 89 7413130 | Fax: +49 89 7146035

  • Don't understand IMAQ image behavior

    Hi there,
         I have several image controls in my application.  When I assign image A to image B (in my wiring diagram), and then close image B, image A is no longer valid!  When I try to crop image A after closing image B, I get a "not an image" error.  If I do not assign image A to image B, I don't get the error.  If I do not close image B after assigning image A, I don't get the error.
         I am new to IMAQ and don't understand this behavior at all.  It looks like when I try to give the value of image A to image B, it somehow links the two rather than just copying the information over.  Is this a pointer and reference vs. value assignment issue? 
         Regardless, these IMAQ image controls behave differently than any other control in the labview palette.  I hope someone can explain what I am seeing to me so that I that I can learn when I can assign one image to another, and when I can close, and how I can avoid extremely confusing and difficult to debug results.
    Thanks,
    Eric

    Hi,
    You must create each of Image A and Image B separately using IMAQ Create and then copy content of image A to image B using IMAQ Copy.
    Image Display control in Labview does not create an image and does not reserve memory for it. It just displays content of the image it is wired to. I suspect that when you "assign" image A to image B in your program,  you just wire the same image to 2 Image Display controls. No wonder they show identical image. When you "close image B", you actually closing the only image you have, memory space allocated fot that image is released and reference is no longer valid. After that any attempt to modify/change that image will return "not an image" error.
    I recommend you to look into Vision examples shipped with Labview - see for example "Extract Example.vi" in "C:\Program Files\National Instruments\LabVIEW 7.1\examples\Vision\2. Functions\Image Management". In the path above you should change LabVIEW 7.1 to your version of LabVIEW.

  • Using IMAQ Image Display control vs IMAQ WindDraw for large image files

    Hello All;
    I am designing an application that is currently using IMAQ Image Display control to view large images (5K x 3K and larger).  My problem is that these images take 10-20 seconds to load and display, whereas if I use IMAQ WindDraw to display my image in a separate window, it only takes a couple of seconds.  My application is designed such that I am making use of the Subpanels in LabVIEW 8.0, and to make it pleasant for the user, the interface is such that my line profile, histograph and image viewer displays are contained within the same GUI (panel).
    I read the National Instruments application note regarding displaying of large images, and it did not seem to make a difference.  For example, I switched the 'modern' IMAQ Image Display control with the classic Image Display control, since the 'classic' does not contain any of the 3D rendering tools which might slow the process down.
    Why is there such a huge difference in loading times if I am trying to do exactly the same thing with both methods?  How can I bring the IMAQ Image Display control up to the same speed as the IMAQ WindDraw tool?
    I am currently using LabVIEW 8.0 with the latest IMAQ/NI Vision package from NI (IMAQ v7.1?).  Thanks.
    DJH

    Use a property node and select 16 bit image mapping. You can create a control for this or whatever you need. If you select the individual elements, you can get enumerated controls.
    Bruce
    Bruce Ammons
    Ammons Engineering

  • LabView 8.6 Imaq Image.ctl error when trying to probe wire.

    I just installed 8.6 from 8.0. Now when I try and probe a wire I get a dialog that wants me to find the IMAQ Image.ctl file. If I cancel out of the window about three time it will finally set the probe. I do not have vision or IMAQ on this computer. Has any one had this problem? Is this another one of the times I get to uninstall and reinstall LabVIEW?
    Tim
    Johnson Controls
    Holland Michigan

    Does this happen for all of your wires that you try probing, or just one particular data type?
    It does happen for all of the wires types.  
    Does the dialog look similar to the dialog that appears when you load a vi that can find the associated files, or does it appear as something different?
    If I right click I get a dialog that looks very similar to the dialog that pops up when the associated files are missing.
    I might reccomend installing vision acquisition software (only install the IMAQ driver, not IMAQ-dx) and see if this fixes the problem
    Is this avaliable if I do not have a license for vision 8.6?
    Tim
    Johnson Controls
    Holland Michigan

Maybe you are looking for