Simply capture raster image from webcam or camera

Hello everybody!
First, thanks to all for all the good ideas I've read on this forum!
I would like to capture images (raster type) from an external device (webcam, camera...) to apply particular processing on them. I would not like to lose time extracting these rasters... in a way to focus on my postprocessing stage. Does anybody know the simplest way to do this? JMStudio? but how?
Thanks a lot!!!

Hi...
Could you not just use the Java Media Framework API to do an image capture from the webcam?
http://java.sun.com/dev/evangcentral/totallytech/jmf.html

Similar Messages

  • How to capture an image from my usb camera and display on my front panel

    How to capture an image from my usb camera and display on my front panel

    Install NI Vision Acquisition Software and NI IMAQ for USB and open an example.
    Christian

  • Raspberry Pi B+ capture a image from a video cam

    Hello,
    is there any way to capture a image from the video camera. I didn't find any media class for video. Nor did I find any Runtime.exec to use a native linux command.
    Did I overseen something?

    Hi Klaus,
    There a few ideas in design stage, but nothing solid enough to talk about. And actually it should not have been possible with older ME as it's specifically prohibited by the spec. I mean native methods in Java applications. Of course there may be other means to communicate with native applications, like files, sockets etc. But no direct calls
    The date for ME 8.1 GA (General Availability) release is not confirmed yet. But it should happen quite soon, stay tuned
    Regards.
    Andrey

  • Capturing an image from webcam

    hi, i'm trying to capture a image from a webcam, but i don't have a clue of how to do this, could anyone help me with samples or books.
    thanks.

    hi
    so as i understood u want to access the USB and make whats called camera interaction i worked with my webcam and i generate a video stream and i'm working now to sample this video
    i found these class on the internet u have to make a littel changes like camera defention
    * File: DeviceInfo.java.java
    * created 24.07.2001 21:44:12 by David Fischer, [email protected]
    import java.awt.Dimension;
    import javax.media.*;
    import javax.media.control.*;
    import javax.media.format.*;
    import javax.media.protocol.*;
    public class DeviceInfo
         public static Format formatMatches (Format format, Format supported[] )
              if (supported == null)
                   return null;
              for (int i = 0;  i < supported.length;  i++)
                   if (supported.matches(format))
                        return supported[i];
              return null;
         public static boolean setFormat(DataSource dataSource, Format format)
              boolean formatApplied = false;
              FormatControl formatControls[] = null;
              formatControls = ((CaptureDevice) dataSource).getFormatControls();
              for (int x = 0; x < formatControls.length; x++)
                   if (formatControls[x] == null)
                        continue;
                   Format supportedFormats[] = formatControls[x].getSupportedFormats();
                   if (supportedFormats == null)
                        continue;
                   if (DeviceInfo.formatMatches(format, supportedFormats) != null)
                        formatControls[x].setFormat(format);
                        formatApplied = true;
              return formatApplied;
         public static boolean isVideo(Format format)
              return (format instanceof VideoFormat);
         public static boolean isAudio(Format format)
              return (format instanceof AudioFormat);
         public static String formatToString(Format format)
              if (isVideo(format))
                   return videoFormatToString((VideoFormat) format);
              if (isAudio(format))
                   return audioFormatToString((AudioFormat) format);
              return ("--- unknown media device format ---");
         public static String videoFormatToString(VideoFormat videoFormat)
              StringBuffer result = new StringBuffer();
              // add width x height (size)
              Dimension d = videoFormat.getSize();
              result.append("size=" + (int) d.getWidth() + "x" + (int) d.getHeight() + ", ");
              // try to add color depth
              if (videoFormat instanceof IndexedColorFormat)
                   IndexedColorFormat f = (IndexedColorFormat) videoFormat;
                   result.append("color depth=" + f.getMapSize() + ", ");
              // add encoding
              result.append("encoding=" + videoFormat.getEncoding() + ", ");
              // add max data length
              result.append("maxdatalength=" + videoFormat.getMaxDataLength() + "");
              return result.toString();
         public static String audioFormatToString(AudioFormat audioFormat)
              StringBuffer result = new StringBuffer();
              // short workaround
              result.append(audioFormat.toString().toLowerCase());
              return result.toString();
    the second class:
    * File: MyDataSinkListener.java
    * created 24.07.2001 21:41:47 by David Fischer, [email protected]
    * Decription: simple data sink listener, used to check for end of stream
    import javax.media.datasink.*;
    public class MyDataSinkListener implements DataSinkListener
         boolean endOfStream = false;
         public void dataSinkUpdate(DataSinkEvent event)
              if (event instanceof javax.media.datasink.EndOfStreamEvent)
                   endOfStream = true;
         public void waitEndOfStream(long checkTimeMs)
              while (! endOfStream)
                   Stdout.log("datasink: waiting for end of stream ...");
                   try { Thread.currentThread().sleep(checkTimeMs); } catch (InterruptedException ie) {}
              Stdout.log("datasink: ... end of stream reached.");
    * File: MyDataSinkListener.java
    * created 24.07.2001 21:41:47 by David Fischer, [email protected]
    * Decription: simple data sink listener, used to check for end of stream
    import javax.media.datasink.*;
    public class MyDataSinkListener implements DataSinkListener
         boolean endOfStream = false;
         public void dataSinkUpdate(DataSinkEvent event)
              if (event instanceof javax.media.datasink.EndOfStreamEvent)
                   endOfStream = true;
         public void waitEndOfStream(long checkTimeMs)
              while (! endOfStream)
                   Stdout.log("datasink: waiting for end of stream ...");
                   try { Thread.currentThread().sleep(checkTimeMs); } catch (InterruptedException ie) {}
              Stdout.log("datasink: ... end of stream reached.");
    }[i]the 3rd class:/******************************************************
    * File: Stdout.java.java
    * created 24.07.2001 21:44:46 by David Fischer, [email protected]
    * Description: utility class for standard output
    public class Stdout
         public static void log(String msg)
              System.out.println(msg);
         public static void logAndAbortException(Exception e)
              log("" + e);
              flush();
              System.exit(0);
         public static void logAndAbortError(Error e)
              log("" + e);
              flush();
              System.exit(0);
         public static void flush()
              System.out.flush();
    the 4rt is :
    * File: TestQuickCamPro.java
    * created 24.07.2001 21:40:13 by David Fischer, [email protected]
    * Description: this test program will capture the video and audio stream
    * from a Logitech QuickCam� Pro 3000 USB camera for 10 seconds and stores
    * it on a file, named "testcam.avi". You can use the microsoft windows
    * media player to display this file.
    * operating system: Windows 2000
    * required hardware:  Logitech QuickCam� Pro 3000
    * required software: jdk 1.3 or jdk1.4 plus jmf2.1.1 (www.javasoft.com)
    * source files: DeviceInfo.java, MyDataSinkListener.java,
    *               Stdout.java, TestQuickCamPro.java
    * You can just start this program with "java TestQuickCamPro"
    * hint: please make shure that you setup first the logitech camerea drives
    * and jmf2.1.1 correctly. "jmf.jar" must be part of your CLASSPATH.
    * useful links:
    * - http://java.sun.com/products/java-media/jmf/2.1.1/index.html
    * - http://java.sun.com/products/java-media/jmf/2.1.1/solutions/index.html
    * with some small modifications, this program will work with any USB camera.
    import java.io.*;
    import javax.media.*;
    import javax.media.control.*;
    import javax.media.datasink.*;
    import javax.media.format.*;
    import javax.media.protocol.*;
    public class TestQuickCamPro
         private static boolean                    debugDeviceList = false;
         private static String                    defaultVideoDeviceName = "vfw:Microsoft WDM Image Capture (Win32):0";
         private static String                    defaultAudioDeviceName = "DirectSoundCapture";
         private static String                    defaultVideoFormatString = "size=176x144, encoding=yuv, maxdatalength=38016";
         private static String                    defaultAudioFormatString = "linear, 16000.0 hz, 8-bit, mono, unsigned";
         private static CaptureDeviceInfo     captureVideoDevice = null;
         private static CaptureDeviceInfo     captureAudioDevice = null;
         private static VideoFormat               captureVideoFormat = null;
         private static AudioFormat               captureAudioFormat = null;
         public static void main(String args[])
              // get command line arguments
              for (int x = 0; x < args.length; x++)
                   // -dd = debug devices list -> display list of all media devices - and exit
                   if (args[x].toLowerCase().compareTo("-dd") == 0)
                        debugDeviceList = true;
              // get a list of all media devices, search default devices and formats, and print it out if args[x] = "-dd"
              Stdout.log("get list of all media devices ...");
              java.util.Vector deviceListVector = CaptureDeviceManager.getDeviceList(null);
              if (deviceListVector == null)
                   Stdout.log("... error: media device list vector is null, program aborted");
                   System.exit(0);
              if (deviceListVector.size() == 0)
                   Stdout.log("... error: media device list vector size is 0, program aborted");
                   System.exit(0);
              for (int x = 0; x < deviceListVector.size(); x++)
                   // display device name
                   CaptureDeviceInfo deviceInfo = (CaptureDeviceInfo) deviceListVector.elementAt(x);
                   String deviceInfoText = deviceInfo.getName();
                   if (debugDeviceList)
                        Stdout.log("device " + x + ": " + deviceInfoText);
                   // display device formats
                   Format deviceFormat[] = deviceInfo.getFormats();
                   for (int y = 0; y < deviceFormat.length; y++)
                        // serach for default video device
                        if (captureVideoDevice == null)
                             if (deviceFormat[y] instanceof VideoFormat)
                             if (deviceInfo.getName().indexOf(defaultVideoDeviceName) >= 0)
                             captureVideoDevice = deviceInfo;
                             Stdout.log(">>> capture video device = " + deviceInfo.getName());
                        // search for default video format
                        if (captureVideoDevice == deviceInfo)
                             if (captureVideoFormat == null)
                             if (DeviceInfo.formatToString(deviceFormat[y]).indexOf(defaultVideoFormatString) >= 0)
                             captureVideoFormat = (VideoFormat) deviceFormat[y];
                             Stdout.log(">>> capture video format = " + DeviceInfo.formatToString(deviceFormat[y]));
                        // serach for default audio device
                        if (captureAudioDevice == null)
                             if (deviceFormat[y] instanceof AudioFormat)
                             if (deviceInfo.getName().indexOf(defaultAudioDeviceName) >= 0)
                             captureAudioDevice = deviceInfo;
                             Stdout.log(">>> capture audio device = " + deviceInfo.getName());
                        // search for default audio format
                        if (captureAudioDevice == deviceInfo)
                             if (captureAudioFormat == null)
                             if (DeviceInfo.formatToString(deviceFormat[y]).indexOf(defaultAudioFormatString) >= 0)
                             captureAudioFormat = (AudioFormat) deviceFormat[y];
                             Stdout.log(">>> capture audio format = " + DeviceInfo.formatToString(deviceFormat[y]));
                        if (debugDeviceList)
                             Stdout.log(" - format: " +  DeviceInfo.formatToString(deviceFormat[y]));
              Stdout.log("... list completed.");
              // if args[x] = "-dd" terminate now
              if (debugDeviceList)
                   System.exit(0);
              // setup video data source
              MediaLocator videoMediaLocator = captureVideoDevice.getLocator();
              DataSource videoDataSource = null;
              try
                   videoDataSource = javax.media.Manager.createDataSource(videoMediaLocator);
              catch (IOException ie) { Stdout.logAndAbortException(ie); }
              catch (NoDataSourceException nse) { Stdout.logAndAbortException(nse); }
              if (! DeviceInfo.setFormat(videoDataSource, captureVideoFormat))
                   Stdout.log("Error: unable to set video format - program aborted");
                   System.exit(0);
              // setup audio data source
              MediaLocator audioMediaLocator = captureAudioDevice.getLocator();
              DataSource audioDataSource = null;
              try
                   audioDataSource = javax.media.Manager.createDataSource(audioMediaLocator);
              catch (IOException ie) { Stdout.logAndAbortException(ie); }
              catch (NoDataSourceException nse) { Stdout.logAndAbortException(nse); }
              if (! DeviceInfo.setFormat(audioDataSource, captureAudioFormat))
                   Stdout.log("Error: unable to set audio format - program aborted");
                   System.exit(0);
              // merge the two data sources
              DataSource mixedDataSource = null;
              try
                   DataSource dArray[] = new DataSource[2];
                   dArray[0] = videoDataSource;
                   dArray[1] = audioDataSource;
                   mixedDataSource = javax.media.Manager.createMergingDataSource(dArray);
              catch (IncompatibleSourceException ise) { Stdout.logAndAbortException(ise); }
              // create a new processor
              // setup output file format  ->> msvideo
              FileTypeDescriptor outputType = new FileTypeDescriptor(FileTypeDescriptor.MSVIDEO);
              // setup output video and audio data format
              Format outputFormat[] = new Format[2];
              outputFormat[0] = new VideoFormat(VideoFormat.INDEO50);
              outputFormat[1] = new AudioFormat(AudioFormat.GSM_MS /* LINEAR */);
              // create processor
              ProcessorModel processorModel = new ProcessorModel(mixedDataSource, outputFormat, outputType);
              Processor processor = null;
              try
                   processor = Manager.createRealizedProcessor(processorModel);
              catch (IOException e) { Stdout.logAndAbortException(e); }
              catch (NoProcessorException e) { Stdout.logAndAbortException(e); }
              catch (CannotRealizeException e) { Stdout.logAndAbortException(e); }
              // get the output of the processor
              DataSource source = processor.getDataOutput();
              // create a File protocol MediaLocator with the location
              // of the file to which bits are to be written
              MediaLocator dest = new MediaLocator("file:testcam.avi");
              // create a datasink to do the file
              DataSink dataSink = null;
              MyDataSinkListener dataSinkListener = null;
              try
                   dataSink = Manager.createDataSink(source, dest);
                   dataSinkListener = new MyDataSinkListener();
                   dataSink.addDataSinkListener(dataSinkListener);
                   dataSink.open();
              catch (IOException e) { Stdout.logAndAbortException(e); }
              catch (NoDataSinkException e) { Stdout.logAndAbortException(e); }
              catch (SecurityException e) { Stdout.logAndAbortException(e); }
              // now start the datasink and processor
              try
                   dataSink.start();
              catch (IOException e) { Stdout.logAndAbortException(e); }
              processor.start();
              Stdout.log("starting capturing ...");
              try { Thread.currentThread().sleep(10000); } catch (InterruptedException ie) {}     // capture for 10 seconds
              Stdout.log("... capturing done");
              // stop and close the processor when done capturing...
              // close the datasink when EndOfStream event is received...
              processor.stop();
              processor.close();
              dataSinkListener.waitEndOfStream(10);
              dataSink.close();
              Stdout.log("[all done]");
    }finally search with the athour name there is an additional program u must download to detect ur cam .
    i hope that is work with u

  • Capture an image using the web camera from a web application

    Hi All,
    Could anyone please share the steps what have to be followed for capture an image using the web camera from a web application.
    I have a similar requirement like this,
    1) Detect the Webcam on the users machine from the web application.(To be more clear when the user clicks on 'Add Photo' tool from the web application)
    2) When the user confirms to save, save the Image in users machine at some temporary location with some unique file name.
    3) Upload the Image to the server from the temporary location.
    Please share the details like, what can be used and how it can be used etc...
    Thanks,
    Suman

    1) Detect the Webcam on the users machine from the web application.(To be more clear when the user clicks on 'Add Photo' tool from the web application)There's not really any good way to do this with JMF. You'd have to somehow create a JMF web-start application that will install the native JMF binaries, and then kick off the capture device scanning code from the application, and then scan through the list of devices found to get the MediaLocator of the web cam.
    2) When the user confirms to save, save the Image in users machine at some temporary location with some unique file name.You'd probably be displaying a "preview" window and then you'd just want to capture the image. There are a handful of ways you could capture the image, but it really depends on your situation.
    3) Upload the Image to the server from the temporary location.You can find out how to do this on google.
    All things told, this application is probably more suited to be a FMJ (Freedom for Media in Java) application than a JMF application. JMF relies on native code to capture from the web cams, whereas FMJ does not.
    Alternately, you might want to look into Adobe Flex for this particular application.

  • Errors in code that captures images from webcam

    Here is the code
    import javax.swing.*;
    import javax.swing.border.*;
    import java.io.*;
    import javax.media.*;
    import javax.media.datasink.*;
    import javax.media.format.*;
    import javax.media.protocol.*;
    import javax.media.util.*;
    import javax.media.control.*;
    import java.util.*;
    import java.awt.*;
    import java.awt.image.*;
    import java.awt.event.*;
    import com.sun.image.codec.jpeg.*;
    // import com.sun.media.vfw.VFWCapture; // JMF 2.1.1c version
    import com.sun.media.protocol.vfw.VFWCapture; // JMF 2.1.1e version
    public class JWebCam extends JFrame
    implements WindowListener, ComponentListener
    protected final static int MIN_WIDTH = 320;
    protected final static int MIN_HEIGHT = 240;
    protected static int shotCounter = 1;
    protected JLabel statusBar = null;
    protected JPanel visualContainer = null;
    protected Component visualComponent = null;
    protected JToolBar toolbar = null;
    protected MyToolBarAction formatButton = null;
    protected MyToolBarAction captureButton = null;
    protected Player player = null;
    protected CaptureDeviceInfo webCamDeviceInfo = null;
    protected MediaLocator ml = null;
    protected Dimension imageSize = null;
    protected FormatControl formatControl = null;
    protected VideoFormat currentFormat = null;
    protected Format[] videoFormats = null;
    protected MyVideoFormat[] myFormatList = null;
    protected boolean initialised = false;
    * Constructor
    public JWebCam ( String frameTitle )
    super ( frameTitle );
    try
    UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
    catch ( Exception cnfe )
    System.out.println ("Note : Cannot load look and feel settings");
    setSize ( 320, 260 ); // default size...
    addWindowListener ( this );
    addComponentListener ( this );
    getContentPane().setLayout ( new BorderLayout() );
    visualContainer = new JPanel();
    visualContainer.setLayout ( new BorderLayout() );
    getContentPane().add ( visualContainer, BorderLayout.CENTER );
    statusBar = new JLabel ("");
    statusBar.setBorder ( new EtchedBorder() );
    getContentPane().add ( statusBar, BorderLayout.SOUTH );
    * Initialise
    * @returns true if web cam is detected
    public boolean initialise ( )
    throws Exception
    return ( initialise ( autoDetect() ) );
    * Initialise
    * @params _deviceInfo, specific web cam device if not autodetected
    * @returns true if web cam is detected
    public boolean initialise ( CaptureDeviceInfo _deviceInfo )
    throws Exception
    statusBar.setText ( "Initialising...");
    webCamDeviceInfo = _deviceInfo;
    if ( webCamDeviceInfo != null )
    statusBar.setText ( "Connecting to : " + webCamDeviceInfo.getName() );
    try
    setUpToolBar();
    getContentPane().add ( toolbar, BorderLayout.NORTH );
    ml = webCamDeviceInfo.getLocator();
    if ( ml != null )
    player = Manager.createRealizedPlayer ( ml );
    if ( player != null )
    player.start();
    formatControl = (FormatControl)player.getControl ( "javax.media.control.FormatControl" );
    videoFormats = webCamDeviceInfo.getFormats();
    visualComponent = player.getVisualComponent();
    if ( visualComponent != null )
    visualContainer.add ( visualComponent, BorderLayout.CENTER );
    myFormatList = new MyVideoFormat[videoFormats.length];
    for ( int i=0; i<videoFormats.length; i++ )
    myFormatList = new MyVideoFormat ( (VideoFormat)videoFormats );
    Format currFormat = formatControl.getFormat();
    if ( currFormat instanceof VideoFormat )
    currentFormat = (VideoFormat)currFormat;
    imageSize = currentFormat.getSize();
    visualContainer.setPreferredSize ( imageSize );
    setSize ( imageSize.width, imageSize.height + statusBar.getHeight() + toolbar.getHeight() );
    else
    System.err.println ("Error : Cannot get current video format");
    invalidate();
    pack();
    return ( true );
    else
    System.err.println ("Error : Could not get visual component");
    return ( false );
    else
    System.err.println ("Error : Cannot create player");
    statusBar.setText ( "Cannot create player" );
    return ( false );
    else
    System.err.println ("Error : No MediaLocator for " + webCamDeviceInfo.getName() );
    statusBar.setText ( "No Media Locator for : " + webCamDeviceInfo.getName() );
    return ( false );
    catch ( IOException ioEx )
    statusBar.setText ( "Connecting to : " + webCamDeviceInfo.getName() );
    return ( false );
    catch ( NoPlayerException npex )
    statusBar.setText ("Cannot create player");
    return ( false );
    catch ( CannotRealizeException nre )
    statusBar.setText ( "Cannot realize player");
    return ( false );
    else
    return ( false );
    * Dynamically create menu items
    * @returns the device info object if found, null otherwise
    public void setFormat ( VideoFormat selectedFormat )
    if ( formatControl != null )
    player.stop();
    imageSize = selectedFormat.getSize();
    formatControl.setFormat ( selectedFormat );
    player.start();
    statusBar.setText ( "Format : " + selectedFormat );
    currentFormat = selectedFormat;
    visualContainer.setPreferredSize ( currentFormat.getSize() );
    setSize ( imageSize.width, imageSize.height + statusBar.getHeight() + toolbar.getHeight() );
    else
    System.out.println ("Visual component not an instance of FormatControl");
    statusBar.setText ( "Visual component cannot change format" );
    public VideoFormat getFormat ( )
    return ( currentFormat );
    protected void setUpToolBar ( )
    toolbar = new JToolBar();
    // Note : If you supply the 16 x 16 bitmaps then you can replace
    // the commented line in the MyToolBarAction constructor
    formatButton = new MyToolBarAction ( "Resolution", "BtnFormat.jpg" );
    captureButton = new MyToolBarAction ( "Capture", "BtnCapture.jpg" );
    toolbar.add ( formatButton );
    toolbar.add ( captureButton );
    getContentPane().add ( toolbar, BorderLayout.NORTH );
    protected void toolbarHandler ( MyToolBarAction actionBtn )
    if ( actionBtn == formatButton )
    Object selected = JOptionPane.showInputDialog (this,
    "Select Video format",
    "Capture format selection",
    JOptionPane.INFORMATION_MESSAGE,
    null, // Icon icon,
    myFormatList, // videoFormats,
    currentFormat );
    if ( selected != null )
    setFormat ( ((MyVideoFormat)selected).format );
    else if ( actionBtn == captureButton )
    Image photo = grabFrameImage ( );
    if ( photo != null )
    MySnapshot snapshot = new MySnapshot ( photo, new Dimension ( imageSize ) );
    else
    System.err.println ("Error : Could not grab frame");
    * autoDetects the first web camera in the system
    * searches for video for windows ( vfw ) capture devices
    * @returns the device info object if found, null otherwise
    public CaptureDeviceInfo autoDetect ( )
    Vector list = CaptureDeviceManager.getDeviceList ( null );
    CaptureDeviceInfo devInfo = null;
    if ( list != null )
    String name;
    for ( int i=0; i<list.size(); i++ )
    devInfo = (CaptureDeviceInfo)list.elementAt ( i );
    name = devInfo.getName();
    if ( name.startsWith ("vfw:") )
    break;
    if ( devInfo != null && devInfo.getName().startsWith("vfw:") )
    return ( devInfo );
    else
    for ( int i = 0; i < 10; i++ )
    try
    name = VFWCapture.capGetDriverDescriptionName ( i );
    if (name != null && name.length() > 1)
    devInfo = com.sun.media.protocol.vfw.VFWSourceStream.autoDetect ( i );
    if ( devInfo != null )
    return ( devInfo );
    catch ( Exception ioEx )
    // ignore errors detecting device
    statusBar.setText ( "AutoDetect failed : " + ioEx.getMessage() );
    return ( null );
    else
    return ( null );
    * deviceInfo
    * @note outputs text information
    public void deviceInfo ( )
    if ( webCamDeviceInfo != null )
    Format[] formats = webCamDeviceInfo.getFormats();
    if ( ( formats != null ) && ( formats.length > 0 ) )
    for ( int i=0; i<formats.length; i++ )
    Format[] aFormat = formats;
    if ( aFormat[i] instanceof VideoFormat )
    Dimension dim = ((VideoFormat)aFormat).getSize();
    // System.out.println ("Video Format " + i + " : " + formats.getEncoding() + ", " + dim.width + " x " + dim.height );
    else
    System.out.println ("Error : No web cam detected");
    * grabs a frame's buffer from the web cam / device
    * @returns A frames buffer
    public Buffer grabFrameBuffer ( )
    if ( player != null )
    FrameGrabbingControl fgc = (FrameGrabbingControl)player.getControl ( "javax.media.control.FrameGrabbingControl" );
    if ( fgc != null )
    return ( fgc.grabFrame() );
    else
    System.err.println ("Error : FrameGrabbingControl is null");
    return ( null );
    else
    System.err.println ("Error : Player is null");
    return ( null );
    * grabs a frame's buffer, as an image, from the web cam / device
    * @returns A frames buffer as an image
    public Image grabFrameImage ( )
    Buffer buffer = grabFrameBuffer();
    if ( buffer != null )
    // Convert it to an image
    BufferToImage btoi = new BufferToImage ( (VideoFormat)buffer.getFormat() );
    if ( btoi != null )
    Image image = btoi.createImage ( buffer );
    if ( image != null )
    return ( image );
    else
    System.err.println ("Error : BufferToImage cannot convert buffer");
    return ( null );
    else
    System.err.println ("Error : cannot create BufferToImage instance");
    return ( null );
    else
    System.out.println ("Error : Buffer grabbed is null");
    return ( null );
    * Closes and cleans up the player
    public void playerClose ( )
    if ( player != null )
    player.close();
    player.deallocate();
    player = null;
    public void windowClosing ( WindowEvent e )
    playerClose();
    System.exit ( 1 );
    public void componentResized ( ComponentEvent e )
    Dimension dim = getSize();
    boolean mustResize = false;
    if ( dim.width < MIN_WIDTH )
    dim.width = MIN_WIDTH;
    mustResize = true;
    if ( dim.height < MIN_HEIGHT )
    dim.height = MIN_HEIGHT;
    mustResize = true;
    if ( mustResize )
    setSize ( dim );
    public void windowActivated ( WindowEvent e ) { }
    public void windowClosed ( WindowEvent e ) { }
    public void windowDeactivated ( WindowEvent e ) { }
    public void windowDeiconified ( WindowEvent e ) { }
    public void windowIconified ( WindowEvent e ) { }
    public void windowOpened ( WindowEvent e ) { }
    public void componentHidden(ComponentEvent e) { }
    public void componentMoved(ComponentEvent e) { }
    public void componentShown(ComponentEvent e) { }
    protected void finalize ( ) throws Throwable
    playerClose();
    super.finalize();
    class MyToolBarAction extends AbstractAction
    public MyToolBarAction ( String name, String imagefile )
    // Note : Use version this if you supply your own toolbar icons
    // super ( name, new ImageIcon ( imagefile ) );
    super ( name );
    public void actionPerformed ( ActionEvent event )
    toolbarHandler ( this );
    class MyVideoFormat
    public VideoFormat format;
    public MyVideoFormat ( VideoFormat _format )
    format = _format;
    public String toString ( )
    Dimension dim = format.getSize();
    return ( format.getEncoding() + " [ " + dim.width + " x " + dim.height + " ]" );
    class MySnapshot extends JFrame
    protected Image photo = null;
    protected int shotNumber;
    public MySnapshot ( Image grabbedFrame, Dimension imageSize )
    super ( );
    shotNumber = shotCounter++;
    setTitle ( "Photo" + shotNumber );
    photo = grabbedFrame;
    setDefaultCloseOperation ( WindowConstants.DISPOSE_ON_CLOSE );
    int imageHeight = photo.getWidth ( this );
    int imageWidth = photo.getHeight ( this );
    setSize ( imageSize.width, imageSize.height );
    final FileDialog saveDialog = new FileDialog ( this, "Save JPEG", FileDialog.SAVE );
    final JFrame thisCopy = this;
    saveDialog.setFile ( "Photo" + shotNumber );
    addWindowListener ( new WindowAdapter()
    public void windowClosing ( WindowEvent e )
    saveDialog.show();
    String filename = saveDialog.getFile();
    if ( filename != null )
    if ( saveJPEG ( filename ) )
    JOptionPane.showMessageDialog ( thisCopy, "Saved " + filename );
    setVisible ( false );
    dispose();
    else
    JOptionPane.showMessageDialog ( thisCopy, "Error saving " + filename );
    else
    setVisible ( false );
    dispose();
    setVisible ( true );
    public void paint ( Graphics g )
    g.drawImage ( photo, 0, 0, getWidth(), getHeight(), this );
    * Saves an image as a JPEG
    * @params the image to save
    * @params the filename to save the image as
    public boolean saveJPEG ( String filename )
    boolean saved = false;
    BufferedImage bi = new BufferedImage ( photo.getWidth(null),
    photo.getHeight(null),
    BufferedImage.TYPE_INT_RGB );
    Graphics2D g2 = bi.createGraphics();
    g2.drawImage ( photo, null, null );
    FileOutputStream out = null;
    try
    out = new FileOutputStream ( filename );
    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder ( out );
    JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam ( bi );
    param.setQuality ( 1.0f, false ); // 100% high quality setting, no compression
    encoder.setJPEGEncodeParam ( param );
    encoder.encode ( bi );
    out.close();
    saved = true;
    catch ( Exception ex )
    System.out.println ("Error saving JPEG : " + ex.getMessage() );
    return ( saved );
    } // of MySnapshot
    public static void main (String[] args )
    try
    JWebCam myWebCam = new JWebCam ( "TimeSlice Web Cam Capture" );
    myWebCam.setVisible ( true );
    if ( !myWebCam.initialise() )
    System.out.println ("Web Cam not detected / initialised");
    catch ( Exception ex )
    ex.printStackTrace();
    when I run it I get the following errors
    BufferToImage cannot convert buffer
    could not grab frame
    pls help

    Do you expect anyone to read this?
    http://forum.java.sun.com/help.jspa?sec=formatting
    By the way, you have a condition that makes it print those messages. Check why that condiiton isn't rue.

  • Capturing live image from integrated Webcam using Labview

    How can i capture live image from my laptop integrated webcam using LabVIEW ?
    Even after installing all the IMAQ drivers, MAX is not displaying my integrated webcam ?
    Why is it so ?
    do i need to install some additional drivers for this ?
    Thanks and Regards
    Gaurav Pal

    hi, you can use NI Vision Assistant
    IDE ofNI Vision Assistant
    ..select acquire images
    ...select option 2
    ...select devices: CAM0 (default webcam), video mode resolution 
    ...option 1 acquire single, option 2 acquire continuous 
    Atom
    Certified LabVIEW Associate Developer

  • Lightroom not merging and sorting images from two different cameras - help please !!

    Hi guys,
    I need some help here. I've just imported a few thousands of images form two different cameras, however Lightroom simply sorts them by camera only. (i.e.. images from the first camera, all sorted by capture time, then come images form the second camera.)
    The cameras are the same brand and model, times are synchronised, but the images refuse to merge and sort. I've tried putting them in the same folder and importing, but that doesn't do it either. I've been doing this for years and it all worked fine, till today. Does anyone know whats causing this, and how I can fix it?
    Thanks in anticipation.
    Latch

    Hi John,
    View > Sort > Capture Time is checked, The cameras are in sync down to the second, and images from both have been merging and sorting fine for over two years, till today. Sort order is all set to capture time in all modes and views, but its still sorting first by camera.

  • Capture Pictures/Images from Video

    Hello All,
    I am just getting warmed up in these forums here. I wanted to know if you could capture still images from video clips and if they are Kodak clear. I have a couple of family videos that I would like to have pictures taken from and framed. Does anybody know much about this?

    <[email protected]> wrote in message <br />news:[email protected]..<br />> Thats interesting. I had talked to a representative from Adobe and I was <br />> told it would be crystal clear of a photograph! That includes after the <br />> image being deinterlaced...<br /><br />It will be "clear."  However, the clarity of a picture is a function of the <br />original video and the resolution.  Standard definition digital video is 720 <br />x 480 pixels for a total of 345,600 or, roughly, 1/3 of a megabyte.  This is <br />very low resolution compared to what a good digital still camera can <br />produce, i.e. 4-8 megabytes.  A high-definition frame will contain 1,920 x <br />1,080 pixels, totaling 2,073,600.  A 2 megabyte frame will produce a <br />reasonable 4 x 6 photograph.

  • How to Display a image from WebCam in the Forms 10.1.2.0.2!

    Hi Friends!
    I'm using a Forms 10.1.2.0.2 and i need to display of someway a image from webcam in some item inside the Forms!
    This is possible?
    I saw an explanation in http://www.orafaq.com/forum/t/89431/67467/ but it works only for a Forms 6.0!
    Somebody can Help me?

    As Jan mentioned, there is no way to display webcam video in Forms unless you create a Java Bean which can be incorporated into your form. As Pauli mentioned, if your webcam software is viewable via a browser, you can use WEB.SHOW_DOCUMENT to display a browser window with the content, however you will not be able to put this content in the form using the method.
    A good starting place would be Google. Look for a java bean or applet which can operate a web cam.
    http://www.google.com/search?q=java+applet+web+cam

  • How to capture an image from a clip

    Hi,
    Is there a way to capture an image from a movie clip using iMovie 06?
    I would like to save some frames from the vedio footage as photos.
    Any help will be greatly appreciated. Thank you.
    New Mac User
      Mac OS X (10.4.5)  

    Hi iMac User:
    Yes-you can save a single frame from iMovie by selecting the File-->Save Frame As option. From there it will ask you where and in what format you want to save it.
    Just be aware that the quality won't be perfect because it is taken from a video clip.
    Sue

  • Photos won't import images from my Canon camera.  When connected, program sees the images, tells me it will import the new ones, then freezes once import starts, not allowing any other operation to happen.  MacbookPro 15" 2012, OSX Yosemite 10.10.3.

    Photos won't import images from my Canon camera.  When connected, program sees the images, tells me it will import the new ones, then freezes once import starts, not allowing any other operation to happen.  MacbookPro 15" 2012, OSX Yosemite 10.10.3.  Any suggestions?

    Solution discovered.  Faulty connector cable.  Tried a different one and it worked.

  • How to change the path of sysprep files that were copied to reference computer when i capture the image from reference.

    Dears ,,
    how to change the path that sysprep were copied to reference computer when i capture the image from reference.
    Should i modify some codes in LTIAPPLY.wsf? how to modify it?
    Thanks.

    Sysprep and capture has *Three* steps.
    1. Run sysprep on the local machine (easy).
    2. Copy WinPE down to the local machine so we can reboot into winpe for capture.
    3. Capture the drive in an *offline* state from within WinPE.
    What is most likely happening is that you are having problems with step #2. 100MB is *WAY* too small to copy down WinPE. By default MDT will make this System partition much bigger, 499MB. IF you install Windows 7 from the default media. IT will only create
    a 100MB partition.
    By default MDT 2012 Update 1 and greater *should* recover to a fallback drive with the OS on it, however if you are running older versions that might not happen correctly.
    If you are still having problems, copy your BDD.log file to a public share like OneDrive and copy the link here.
    Keith Garner - keithga.wordpress.com

  • Any ideas of how to receive images from a wireless camera (2.4 ghz) to my ipad rather than the handheld DVR supplied?

    Any ideas of how to receive images from a wireless camera (2.4 ghz) to my ipad rather than the handheld DVR supplied?

    some of those often have webserver so one just navigate to it using a browser

  • Grab images from a IP camera

    ---BACKGROUND---
    We have very little experience with programming for the LabView, but good experience with programming in general.
    ---SETUP---
    In one end we have the newest LabView (8?) that is connected to several OPC driven PLSes.
    In the other end we have a piece of custom hardware that grabs images from several analog cameras (surveillance machine)
    We need to send the image from the surveillance machine to the labview
    software as easily as possible. We have access to the sourcecode for
    the surveillance machine to writing a custom protocol to send images is
    no problem, the problem is the labview end.
    My question is if there is a way to make labview connect to a machine
    and download images from it, the exact protocol is no problem since we
    can customize the hardware completly, a llI need is a connection where
    images come streaming to it.
    If not then maybe there is a way to program the labview to do the following;
       Connect to a machine on the internet
    Send commands to the connected machine
    Receives images in a loop until connection is broken
    Hope anyone got any clues as to what I am trying to accomplish here.
    Thanks in advance
    Thomas Leggett
    Programmer for DigiTales

    nyc thanks for your time,
    Here is my code, along with the C# example code from the vendor. 
    FYI the sample code from the vendor did not work on the customers machine either, just showed a black screen. I installed VS2010 Express C#.NET on the machine to test if I could grab images from the vendors example and no joy....didnt work.
    Steven Howell
    Certified LabVIEW Developer
    Certified Professional Instructor
    Systems Developer
    Optimation - Houston
    [email protected]
    Attachments:
    Pelco Test.zip ‏188 KB

Maybe you are looking for