"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

Similar Messages

  • 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

  • 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.

  • 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

  • Is there a way to list the 'names' of the IMAQ images in memory?

    looking for a way to generate an array of strings that contains the 'names' of all the IMAQ images in memory. I'm doing some heavy image processing and the nature of the image processing functions makes it easier to work with multiple copies of images to avoid nasty surprises (like images declared one type being unexpectedly recast as another). Unfortunately, this means drawing dozens of wires everywhere to image disposal points, which does nothing but add clutter to the block diagram.
    I'd like to be able to poll the images in memory and delete only those images which are no longer needed.
    Thanks,
    Root
    global variables make robots angry

    Root,
    You could use IMAQ GetImageInfo to get the name of an image.  If your image references are stored in an array it would be easy to generate a list of image names using IMAQ GetImageInfo in a For Loop.
    Hope this helps,
    Message Edited by mfitzsimons on 01-29-2008 05:21 PM
    Matthew Fitzsimons
    Certified LabVIEW Architect
    LabVIEW 6.1 ... 2013, LVOOP, GOOP, TestStand, DAQ, and Vison

  • IMAQ Image to LabView Picture

    Hello,
    I am using XY Graph to display GPS data, XY graph also displays a map that is being preprocessed using vision functions to display correct part of image data, fit the scale etc.
    Everything works fine, but the standard conversion way
    takes long (25 ms). It becomes user unfriendly, when every scale / move of the XY graph introduces a delay.
    The IMAQ vision preprocessing takes about 25ms too, together with some other calculations, the user response is about 60ms and it is just so - so to use.
    I am hoping, to cut some processing time over here, becouse it it just flattening of an array.
    I started making my own IMAQImage2LVPic function, but little success, since I do not understand the Image format of the LVPicture, I keep getting deformed images, memory violations and it becomes frustrating.
    The memory structure of the LVPicture would be great to know. Please help.
    Solved!
    Go to Solution.

    The most likely reason that it is taking so long is that memory resources are redundant several times for this operation. The image data type defies the usual LabVIEW paradigm, as it is essentially a pointer to an array of pixel data rather than the actual data itself. This makes sense because images are fairly large memory chunks, and if you can operate on them and then stick them back in the same place you found them, you really won't cost yourself much RAM. That is how image manipulation generally works.
    However, this changes when you want to bring the actual array data into LabVIEW. When you convert the image to an array, you are reallocating the image. It now exists in the location pointed to by the image wire, and it exists in LabVIEW RAM "on the wire." It is reallocated again when put into the cluster, then reallocated a few more times when calling the Draw Flattened Pixmap VI. At the end, it is flattened to string, which is another allocation, and then concatenated with header data and so forth, which is yet another memory allocation. (By the way, the picture data type is essentially a string full of flattened data). By the end of the whole deal, you have half a dozen or more copies of your image in RAM. That is costly and time consuming, however, when dealing with arrays directly, which is what this method is doing, it is difficult to avoid this because any time you change the size or change the datatype, you are reallocating all of that data again.
    I would suggest going the other way, and trying to use the image data type and use IMAQ and Vision functions. The benefit is that these are designed specifically to handle large arrays of deep data and perform multiple operations on them with minimal memory reallocation. That is why the data type itself is a pointer rather than actual data.
    Wes P
    Certified LabVIEW Developer

  • 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

  • Difference between Low level and Normal IMAQ ?

    There are two options in IMAQ palette a low level and a normal one. Both have the same function names and the same icons the only difference being the balck and white icon of low level functions and colored icons of the normal functions. What is the difference between these two and what is the need of making a low level palette of functions ?
    Regards
    Asad Tirmizi
    Design Engineer
    Institute of Avionics and Aeronautics
    " Its never too late to be, what u want to be"
    Using LabVIEW 8.2

    Low level imaq functions gives you relatively more function to control the hardware. Buffer functions is one which is not there on the high level palatte

  • 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

  • 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

Maybe you are looking for