2011-01-17 20 views
0

Ich möchte eine Anwendung entwickeln, die Bilder von einer Kamera empfängt und diese anschließend in einer Datenbank speichert. Folgendes möchte ich tun:Aktuelle Bilder von einer Kamera anzeigen - AKTUALISIERT

Wenn das Bild aufgenommen wird, wird es sofort an das Programm gesendet (oder das Programm muss das aktuelle Bild lesen) und dann angezeigt werden. Ich werde Bilder von vielen Leuten oder Dingen machen, also wenn ein Bild gemacht wird, will ich das aktuelle Bild sehen, das im Programm angezeigt wird.

Ich habe gegoogelt, wenn ich eine Beispielanwendung sehen kann, so dass ich weiß, dass es möglich ist, damit ich meine von Grund auf neu machen kann. Aber ich konnte nichts finden, daher bin ich mir nicht sicher, ob es in Java möglich ist.

Also Leute fragen nach Richtlinien, wie ich es in Java tun kann. Ich brauche nur die Schritte, dann programmiere ich alles selbst.

Danke.

UPDATE

* Es ist eine Desktop-Anwendung (J2SE).

* Die Kamera wird ständig mit dem Computer verbunden, auf dem die Anwendung ausgeführt wird, während die Bilder für den Moment über Kabel aufgenommen wurden (später vielleicht kabellos).

* werde ich eine der gewöhnlichen Digitalkameras verwenden um

+0

Über welche Art von Kamera sprechen wir? Ist es ständig mit einem Computer/Laptop über Kabel oder drahtlos verbunden? – Tim

+0

Als erstes könntest du bitte erwähnen, für welche Plattform du kodierst. Ist es Android, J2ME oder J2SE? –

Antwort

0

Wenn JMF (link) auf Ihrem System läuft es ziemlich einfach ist, Fotos von Ihrem Streaming-Video zu greifen. Überprüfen Sie diesen Beispielcode, wenn Sie unter Windows ausführen.()

import java.io.*; 
import java.util.*; 
import java.awt.*; 
import java.awt.image.*; 
import javax.imageio.*; 
import javax.media.*; 
import javax.media.control.*; 
import javax.media.format.*; 
import javax.media.util.*; 


/** 
* Grabs a frame from a Webcam, overlays the current date and time, and saves the frame as a PNG to c:\webcam.png 
* 
* @author David 
* @version 1.0, 16/01/2004 
*/ 
public class FrameGrab 
{ 
    public static void main(String[] args) throws Exception 
    { 
     // Create capture device 
     CaptureDeviceInfo deviceInfo = CaptureDeviceManager.getDevice("vfw:Microsoft WDM Image Capture (Win32):0"); 
     Player player = Manager.createRealizedPlayer(deviceInfo.getLocator()); 
     player.start(); 

     // Wait a few seconds for camera to initialise (otherwise img==null) 
     Thread.sleep(3000); 

     // Grab a frame from the capture device 
     FrameGrabbingControl frameGrabber = (FrameGrabbingControl)player.getControl("javax.media.control.FrameGrabbingControl"); 
     Buffer buf = frameGrabber.grabFrame(); 

     // Convert frame to an buffered image so it can be processed and saved 
     Image img = (new BufferToImage((VideoFormat)buf.getFormat()).createImage(buf)); 
     BufferedImage buffImg = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_RGB); 
     Graphics2D g = buffImg.createGraphics(); 
     g.drawImage(img, null, null); 

     // Overlay curent time on image 
     g.setColor(Color.RED); 
     g.setFont(new Font("Verdana", Font.BOLD, 16)); 
     g.drawString((new Date()).toString(), 10, 25); 

     // Save image to disk as PNG 
     ImageIO.write(buffImg, "png", new File("c:\\webcam.png")); 

     // Stop using webcam 
     player.close(); 
     player.deallocate(); 
     System.exit(0); 
    } 
} 
+0

Danke für Ihre Antwort. Ich habe nur eine kleine Frage. Dies bedeutet, dass ich die Digitalkamera verwenden werde, um als Video aufzunehmen und es dann als Bild zu nehmen? – Kap

+0

Ja. So machen wir es. Sie können Ihren Player natürlich schließen, wenn Sie ihn nicht benötigen, und ihn erneut starten, um ein zweites Bild aufzunehmen. –

+0

OK. Vielen Dank für Ihre Antwort. – Kap