1. Überblick Normalerweise bietet Java keinen einfachen Zugriff auf die Computerhardware. Aus diesem Grund kann es schwierig sein, mit Java auf die Webcam zuzugreifen. In diesem Tutorial werden wir einige Java-Bibliotheken kennenlernen, die es uns ermöglichen, Bilder durch Zugriff auf die Webcam zu erfassen.

2. JavaCV Zuerst werden wir die javacv-Bibliothek untersuchen. Dabei handelt es sich um Bytedecos Java-Implementierung der OpenCV-Bibliothek für Computer Vision. Fügen wir die neueste javacv-platform Maven-Abhängigkeit zu unserer pom.xml hinzu: org.bytedeco javacv-platform 1.5.5 In ähnlicher Weise können wir bei der Verwendung von Gradle die javacv-platform-Abhängigkeit in der build.gradle file: compile group: org.bytedeco, name: javacv-platform, version: 1.5.5 Nun, da wir mit dem Setup fertig sind, können wir die OpenCVFrameGrabber-Klasse verwenden, um auf die Webcam zuzugreifen und ein Bild aufzunehmen: FrameGrabber grabber = new OpenCVFrameGrabber(0); grabber.start(); Frame frame = grabber.grab(); Hier haben wir die Gerätenummer als 0 übergeben, die auf die Standard-Webcam des Systems zeigt.

Wenn wir jedoch mehr als eine Kamera zur Verfügung haben, dann ist die zweite Kamera unter 1 erreichbar, die dritte unter 2, und so weiter. Dann können wir den OpenCVFrameConverter verwenden, um das aufgenommene Bild in ein Bild zu konvertieren.

Außerdem werden wir das Bild mit der Methode cvSaveImage der Klasse opencv_imgcodecs speichern: OpenCVFrameConverter.ToIplImage converter = new OpenCVFrameConverter.ToIplImage(); IplImage img = converter.convert(frame); opencv_imgcodecs.cvSaveImage(selfie.jpg, img); Zuletzt können wir die Klasse CanvasFrame verwenden, um das aufgenommene Bild anzuzeigen: CanvasFrame canvas = new CanvasFrame(Web Cam); canvas.showImage(frame); Betrachten wir nun eine vollständige Lösung, die auf die Webcam zugreift, ein Bild aufnimmt, das Bild in einem Rahmen anzeigt und den Capturing Image From Webcam In Java nach zwei Sekunden automatisch schließt: CanvasFrame canvas = new CanvasFrame(Web Cam); canvas.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); FrameGrabber grabber = new OpenCVFrameGrabber(0); OpenCVFrameConverter.ToIplImage converter = new OpenCVFrameConverter.ToIplImage(); grabber.start(); Frame frame = grabber.grab(); IplImage img = converter.convert(frame); cvSaveImage(selfie.jpg, img); canvas.showImage(frame); Thread.sleep(2000); canvas.dispatchEvent(new WindowEvent(canvas, WindowEvent.WINDOW_CLOSING)); 3.

webcam-capture Als Nächstes werden wir die webcam-capture-Bibliothek untersuchen, die die Verwendung der Webcam durch die Unterstützung mehrerer Aufnahme-Frameworks ermöglicht. Zunächst fügen wir die neueste webcam-capture Maven-Abhängigkeit zu unserer pom.xml hinzu: com.github.sarxos webcam-capture 0.3.12 Oder wir können die webcam-capture in der build.gradle für ein Gradle-Projekt: compile group: com.github.sarxos, name: webcam-capture, version: 0.3.12 Dann schreiben wir ein einfaches Beispiel, um ein Bild mit der Webcam-Klasse aufzunehmen: Webcam webcam = Webcam.getDefault(); webcam.open(); BufferedImage image = webcam.getImage(); ImageIO.write(image, ImageUtils.FORMAT_JPG, new File(selfie.jpg)); Hier haben wir auf die Standard-Webcam zugegriffen, um das Bild aufzunehmen, und das Capturing Image From Webcam In Java dann in einer Datei gespeichert.

Alternativ können Capturing Image From Webcam In Java auch die Klasse WebcamUtils verwenden, um ein Bild aufzunehmen: WebcamUtils.capture(webcam, selfie.jpg); Außerdem können wir die Klasse WebcamPanel verwenden, um ein aufgenommenes Bild in einem Rahmen anzuzeigen: Webcam webcam = Webcam.getDefault(); webcam.setViewSize(WebcamResolution.VGA.getSize()); WebcamPanel panel = new WebcamPanel(webcam); panel.setImageSizeDisplayed(true); JFrame window = new JFrame(Webcam); window.add(panel); window.setResizable(true); window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); window.pack(); window.setVisible(true); Hier haben wir VGA als Ansichtsgröße der Webcam festgelegt, das JFrame-Objekt erstellt und die WebcamPanel-Komponente zum Rahmen hinzugefügt.

4. Marvin-Framework Zu guter Letzt werden wir das Marvin-Framework erkunden, um auf die Webcam zuzugreifen und ein Bild zu erfassen. Wie üblich fügen wir die neueste Marvin-Abhängigkeit zu unserer pom.xml hinzu: com.github.downgoon marvin 1.5.5 Oder, für ein Gradle-Projekt, fügen wir die marvin-Abhängigkeit in der build.gradle file: compile group: com.github.downgoon, name: marvin, version: 1.5.5 Nun, da das Setup fertig ist, verwenden wir die MarvinJavaCVAdapter-Klasse, um uns mit der Standard-Webcam zu verbinden, indem wir 0 für die Gerätenummer angeben: MarvinVideoInterface videoAdapter = new MarvinJavaCVAdapter(); videoAdapter.connect(0); Als nächstes können wir die getFrame-Methode verwenden, um das Bild zu erfassen, und dann speichern wir das Bild mit der saveImage-Methode der MarvinImageIO-Klasse: MarvinImage image = videoAdapter.getFrame(); MarvinImageIO.saveImage(image, selfie.jpg); Außerdem können wir die Klasse MarvinImagePanel verwenden, um ein Bild in einem Frame anzuzeigen: MarvinImagePanel imagePanel = new MarvinImagePanel(); imagePanel.setImage(image); imagePanel.setSize(800, 600); imagePanel.setVisible(true); 5.

Fazit In diesem kurzen Artikel haben wir einige Java-Bibliotheken untersucht, die einen einfachen Zugriff auf die Webcam ermöglichen.

Capturing Image From Webcam In Java

Zunächst haben wir uns die javacv-Plattform-Bibliothek angesehen, die eine Java-Implementierung des OpenCV-Projekts bietet. Dann haben wir uns die Beispielimplementierung der webcam-capture-Bibliothek angesehen, um Bilder mit einer Webcam zu erfassen.

Zuletzt haben wir uns die einfachen Beispiele für die Erfassung von Bildern mit dem Marvin-Framework angesehen. Wie üblich sind alle Code-Implementierungen auf GitHub verfügbar.


16 1 21