Converting canvas to an IMAQ Image in CVI

Hi,
I am generating a Canvas image and I would like to use Imaq Vision functions on the image. How can I pass the image from the canvas to an object of type Image?
I need to use the canvas images as color planes to generate an RGB color image.
Thanks,
JHH

JHH-
There are two steps:
1) Convert the canvas to an array using CanvasGetPixels, and
2) Convert the array to an image using imaqArrayToImage
Here is some example code for a canvas that is 320x425:
TestImage = imaqCreateImage (IMAQ_IMAGE_RGB, 3);
CanvasGetPixels (panel, PANEL_CANVAS, MakeRect (0, 0, 320, 425), Data);
imaqArrayToImage (TestImage, Data, 425, 320);
imaqDisplayImage (TestImage, 0, TRUE);
Hope this helps-
Dustin W.

Similar Messages

  • 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

  • Convert Canvas to Image in sapui5

    Convert canvas to image using controller in sapui5,I have tried these codes but nothing works..Please help me.
    Here is my code:
    onOkCloseButton : function(oEvent) {
      var view = this.getView();
      var canvas = view.byId("canvas");
    var dataURL = canvas.toDataURL("image/png");
    // var window = window.open();
    // window.document.write('<img src="'+dataURL+'"/>');
    // window.location = (canvas.toDataURL('image/png'));
    // var dataURL = canvas.toDataURL();
    // $.post("http://localhost:31651/Registration_Card/index.html", { img : canvas.toDataURL() }) 
    // .done(function(data) { 
    //  alert("Image Sent to Server "); //on completion 
    // Canvas2Image.saveAsJPEG(canvas);
    // var oImgJPEG = Canvas2Image.saveAsJPEG(canvas, true);
    // Canvas2Image.saveAsPNG(canvas, false, 100, 100);
      oEvent.getSource().getParent().close();

    Ho to save a canvas as an image in J9 and CDC.
    It seems that I already have resolute by means of the tool Jimi de Sun. Anyway I will thank for any new contribution.
    Thanks

  • Convert imaq image into image vidéo format

    hi,
    (i'm using a french version of labview 7.0, so please answer with components in french!!!)
    i need to convert an IMAQ image (coming out from an IMAQ-Acquire vi) into the image format that comes out from the following vi: 
    "Tracer une table de pixels redressé", whic in my case has a 24bit-pixmap in input.  
    On the help I can't find what image format comes out from "Tracer une table de pixels redressé" and after several essays  I can't find a suitable vi converter.
    please help me.
    thank you very much
    fil

    thank you for the reply
    yes i checked but i found nothing special.
    actually i have tried to route the imaq-image into a 'createJPEGfil' vi. then i loaded the jpegfile, routed it into a 'redresser table de pixel' and then into 'tracer une table de pixel radressé' which has the output that i needed ('image'  type).  but that's sad, as i'm obliged to access to the hard-disk; saving and loading a jpeg file, hence slowing down the all thing.
    any other ideaz?
    merci
    fil

  • How to convert imaq image to a 2D array without vision development module

    Hi,
    I'm looking for a way to convert an Imaq image into a regular picture (2D array) without using "Vision development module", nor saving it to a file (I need a refresh rate of about One frame per second).
    any ideas?
    thanks,
    Gilad.

    Greetings, 
    If instead of attempting to acquire the image as the raw data as per the last example, are you looking for something then like the IMAQ Image to Array? I made some research and initially I believed this VI was part of the Development Module, but I was thinking of the Array to Image VI, which is why I did not bring it up earlier.
    Finally, how exactly will you then be manipulating that array? Or will you simply be interested in displaying it? 
    Cordially;
    Simon P.
    National Instruments
    Applications Engineer

  • 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

  • Need sample code using windows BitBlt() function to display image in CVI

    Hello all,
    I need a sample code which uses windows BitBlt() function to display image in CVI
    Thank you.
    Bob.

    Hello Bob -
    I'm curious why you'd like to use BitBlt.  What functionality does it offer that you've not seen in the CVI canvas control?
    It's hard to say without knowing what transitions you're looking for, but the canvas is very capable of animating/transitioning.  The place it can fall a little short is if you require access to the alpha channel for transparency.
    I put together a short demo for you - maybe it will address some of what you're looking for.  The important functions are CanvasStartBatchDraw, CanvasEndBatchDraw, and CanvasDrawBitmap.  The animation/transition is driven by a simple UI timer.
    Let me know if you have any questions -
    NickB
    National Instruments
    Attachments:
    CanvasAnimation.zip ‏10 KB

  • I want to convert pictures to 1 bit image

    dir sir;
    i want to make a programe by it i want to upload image real image and then it converted it for 1 bit image ;
    can i use java to do that?
    and if soo what method and package and function helps me to do that .
    if you can provide me with simple code i will be thankfull.
    beast regards.

    Hi,
    if you have vision, you could use the functin IMAQ Image to Array to have a 2D array of the pixel values.
    You can then compare pixel by pixel; if your images come from a camera, I would recommend to set a treshold of acceptance.
    This is a time consuming solution anyway.
    Alternative methods:
    1) Make a subtraction of the two images, the resulting image will be the difference of them
    2 ) Use IMAQ LogDiff function (operators palette)
    3) Calculate the histogram of both image and compare the histogram reports
    Good luck,
    Alberto

  • IMAQ image to array vi not working with images extracted from avi file

    Hi,
      I downloaded some avi's and uncompressed them so that I can analyze them within labview. I am trying to convert images I am reading from the avi file to an array. When I use "IMAQ image to array" I get the following error " IMAQ Image To Array  Invalid image type" -1074396080.
       I am able to display each read image and save them to the hard drive, but I am unable to convert the vision image to array. I verified that the image extracted from avi is the same as the image type I created in memory to hold the image.
      Please see the attached vi I created.
    thank you
    Ruz
    Attachments:
    example2.vi ‏62 KB

    Hi all, this thread was useful for me...but i have another doubt... when I try to extract a single plane (Luminance, Saturation, R,G,B...anyone) and try to save it in jpg as gray image, it saves an image with blue tones. I have examinated it using Matlab and checked that Red plane has low values (but not zero), the same for G plane and high values for B plane. An image of the VI is attached.
    Thanks in advance
    Attachments:
    planes.png ‏28 KB

  • Can we control if text in a page is converted, or not, to an image?

    Hello!
    My experience tells me that if I use iWeb 1.0.1 and I put the text color with 80% opacity, for example, all text will be converted to an image. Most of the times I like this behavior, because the result is the same on every computer or browser.
    But after I update for iWeb 1.1.1 all text appears as text and no longer as images. Now, when I want some sites with the text converted to images I still use the older version (1.0.1).
    My question is: Can we control if text is converted, or not, to an image? Can we force a particular text box to be converted to an image, after 1.0.1?
    I search the iWeb forum and I have not find any answer for this particular question.
    Sorry for my english...
    Thanks!
    Power Mac G4 - 867MHz   Mac OS X (10.3.9)  

    Now answering newmacguru...
    1. Why I want text to appear as an image?
    Sometimes the graphical result is important. Most of the times, if you use a white or bright page background, what you see in iWeb is almost the same you see when browsing the page. No problem! But if the page background is black or dark, what you see when browsing the page can be different from what you see when developing the page with iWeb. And these differences can be important... Now if you tell iWeb to convert text to images, the result will be exactly the same you see in iWeb (the result you want).
    Let me show you an example. This page was published with iWeb 1.0.1. In this case all text boxes were converted to images and the result you see is exactly what I want. Normally I choose opacity of 80% in the text color to reduce the contrast between text and background (this is the graphical result I most like):
    http://clientes.netvisao.pt/3ebt2006/iweb/TesteTexto101/
    Now if you publish the page with iWeb 1.1.1/1.1.2 the result is the same for both, but different from the pages obtained with iWeb 1.0.1. I only get the result I want if the text is converted to an image (using shadow). You can also see that with a white background you get good results even if the text remains text:
    http://clientes.netvisao.pt/3ebt2006/iweb/TesteTexto111/
    http://clientes.netvisao.pt/3ebt2006/iweb/TesteTexto112/
    Thanks for the suggestion of the shadow. Sometimes using a non web safe font is not a solution, remember I want “that” graphical result...
    2. Now, considering the search engines, I think I read in this forum that the search engines can do is work, even if text is converted to images, because the text still remains in the page (sorry I don’t remember where).
    Sorry for my english...
    Power Mac G4 - 867MHz   Mac OS X (10.3.9)  

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

  • 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

Maybe you are looking for