import java.awt.BasicStroke; import java.awt.Color; import java.awt.Graphics2D; import java.awt.Point; import java.awt.image.BufferedImage; import java.io.IOException; import javax.swing.JFrame; import com.github.sarxos.webcam.Webcam; import com.github.sarxos.webcam.WebcamMotionDetector; import com.github.sarxos.webcam.WebcamPanel; import com.github.sarxos.webcam.WebcamResolution; /** * Detect motion. This example demonstrates how to use build-in motion detector * and motion listener to fire motion events. * * @author Bartosz Firyn (SarXos) */ public class DetectMotionExample3 extends JFrame implements WebcamPanel.Painter { private static final long serialVersionUID = 1L; private final Webcam webcam; private final WebcamPanel panel; private final WebcamMotionDetector detector; public DetectMotionExample3() { setTitle("Motion Detector Demo"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); webcam = Webcam.getDefault(); webcam.setViewSize(WebcamResolution.VGA.getSize()); webcam.open(true); panel = new WebcamPanel(webcam, false); panel.setPainter(this); panel.start(); detector = new WebcamMotionDetector(webcam); detector.setInterval(500); // one check per 500 ms detector.setPixelThreshold(20); detector.start(); add(panel); pack(); setVisible(true); } public static void main(String[] args) throws IOException { new DetectMotionExample3(); } @Override public void paintPanel(WebcamPanel panel, Graphics2D g2) { panel.getDefaultPainter().paintPanel(panel, g2); } @Override public void paintImage(WebcamPanel panel, BufferedImage image, Graphics2D g2) { double s = detector.getMotionArea(); Point cog = detector.getMotionCog(); Graphics2D g = image.createGraphics(); g.setColor(Color.WHITE); g.drawString(String.format("Area: %.2f%%", s), 10, 20); if (detector.isMotion()) { g.setStroke(new BasicStroke(2)); g.setColor(Color.RED); g.drawOval(cog.x - 5, cog.y - 5, 10, 10); } else { g.setColor(Color.GREEN); g.drawRect(cog.x - 5, cog.y - 5, 10, 10); } g.dispose(); panel.getDefaultPainter().paintImage(panel, image, g2); } }