diff --git a/image-processing/pom.xml b/image-processing/pom.xml
index ea218356ce..b482aa30c1 100644
--- a/image-processing/pom.xml
+++ b/image-processing/pom.xml
@@ -82,6 +82,17 @@
MarvinPlugins
${marvin-version}
+
+ org.bytedeco
+ javacv-platform
+ ${javacv-platform.version}
+
+
+ com.github.sarxos
+ webcam-capture
+ ${webcam-capture.version}
+
+
@@ -91,6 +102,8 @@
4.5.1
4.1.0-1.5.2
3.4.2-0
+ 1.5.5
+ 0.3.12
4.2
0.4.11
1.5.5
diff --git a/image-processing/src/main/java/com/baeldung/imagefromwebcam/MarvinExample.java b/image-processing/src/main/java/com/baeldung/imagefromwebcam/MarvinExample.java
new file mode 100644
index 0000000000..67a46d9d59
--- /dev/null
+++ b/image-processing/src/main/java/com/baeldung/imagefromwebcam/MarvinExample.java
@@ -0,0 +1,31 @@
+package com.baeldung.imagefromwebcam;
+
+import marvin.gui.MarvinImagePanel;
+import marvin.image.MarvinImage;
+import marvin.io.MarvinImageIO;
+import marvin.video.MarvinJavaCVAdapter;
+import marvin.video.MarvinVideoInterface;
+import marvin.video.MarvinVideoInterfaceException;
+
+public class MarvinExample {
+
+ public static void main(String[] args) throws MarvinVideoInterfaceException {
+ MarvinVideoInterface videoAdapter = new MarvinJavaCVAdapter();
+ videoAdapter.connect(0);
+ MarvinImage image = videoAdapter.getFrame();
+ MarvinImageIO.saveImage(image, "selfie.jpg");
+ }
+
+ public void captureWithPanel() throws MarvinVideoInterfaceException {
+ MarvinVideoInterface videoAdapter = new MarvinJavaCVAdapter();
+ videoAdapter.connect(0);
+ MarvinImage image = videoAdapter.getFrame();
+
+ MarvinImagePanel imagePanel = new MarvinImagePanel();
+ imagePanel.setImage(image);
+
+ imagePanel.setSize(800,600);
+ imagePanel.setVisible(true);
+ }
+
+}
diff --git a/image-processing/src/main/java/com/baeldung/imagefromwebcam/OpenCVExample.java b/image-processing/src/main/java/com/baeldung/imagefromwebcam/OpenCVExample.java
new file mode 100644
index 0000000000..3d9d1bcb00
--- /dev/null
+++ b/image-processing/src/main/java/com/baeldung/imagefromwebcam/OpenCVExample.java
@@ -0,0 +1,31 @@
+package com.baeldung.imagefromwebcam;
+
+import org.bytedeco.javacv.*;
+import org.bytedeco.opencv.opencv_core.IplImage;
+import java.awt.event.WindowEvent;
+import javax.swing.JFrame;
+import static org.bytedeco.opencv.helper.opencv_imgcodecs.cvSaveImage;
+
+public class OpenCVExample {
+
+ public static void main(String[] args) throws Exception {
+ 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));
+ }
+
+}
diff --git a/image-processing/src/main/java/com/baeldung/imagefromwebcam/WebcamCaptureExample.java b/image-processing/src/main/java/com/baeldung/imagefromwebcam/WebcamCaptureExample.java
new file mode 100644
index 0000000000..8edde2a637
--- /dev/null
+++ b/image-processing/src/main/java/com/baeldung/imagefromwebcam/WebcamCaptureExample.java
@@ -0,0 +1,41 @@
+package com.baeldung.imagefromwebcam;
+
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
+
+import javax.imageio.ImageIO;
+import javax.swing.JFrame;
+
+import com.github.sarxos.webcam.Webcam;
+import com.github.sarxos.webcam.WebcamPanel;
+import com.github.sarxos.webcam.WebcamResolution;
+import com.github.sarxos.webcam.util.ImageUtils;
+
+public class WebcamCaptureExample {
+
+ public static void main(String[] args) throws IOException, Exception {
+ Webcam webcam = Webcam.getDefault();
+ webcam.open();
+
+ BufferedImage image = webcam.getImage();
+
+ ImageIO.write(image, ImageUtils.FORMAT_JPG, new File("selfie.jpg"));
+ }
+
+ public void captureWithPanel() {
+ 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);
+ }
+
+}