转载一下WebCam摄像,Swing方式,更多内容可浏览:
系列文章:
一、JavaFX摄像:https://blog.csdn.net/haoranhaoshi/article/details/85880893
二、JavaFX拍照:https://blog.csdn.net/haoranhaoshi/article/details/85930981
三、百度人脸识别--人脸对比:https://blog.csdn.net/haoranhaoshi/article/details/85954440
四、人脸库对比:https://blog.csdn.net/haoranhaoshi/article/details/86302313
补充:
解决WebCam框架中摄像模糊:https://blog.csdn.net/haoranhaoshi/article/details/87713878
Java 摄像(依靠开源框架WebCam)(Swing方式):https://blog.csdn.net/haoranhaoshi/article/details/87714541
下载资源:
Java摄像开源框架(文档、案例、Jar包)、个人项目工程(JavaFX)、原始实例(JavaFX):https://download.csdn.net/download/haoranhaoshi/10898408
摄像、拍照、人脸识别、人脸库对比: https://download.csdn.net/download/haoranhaoshi/10911079
效果:
import java.awt.BorderLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.lang.Thread.UncaughtExceptionHandler;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import com.github.sarxos.webcam.Webcam;
import com.github.sarxos.webcam.WebcamDiscoveryEvent;
import com.github.sarxos.webcam.WebcamDiscoveryListener;
import com.github.sarxos.webcam.WebcamEvent;
import com.github.sarxos.webcam.WebcamListener;
import com.github.sarxos.webcam.WebcamPanel;
import com.github.sarxos.webcam.WebcamPicker;
import com.github.sarxos.webcam.WebcamResolution;
/**
* Proof of concept of how to handle webcam video stream from Java
*
* @author Bartosz Firyn (SarXos)
*/
public class WebcamViewerExample extends JFrame implements Runnable, WebcamListener, WindowListener, UncaughtExceptionHandler, ItemListener, WebcamDiscoveryListener {
private static final long serialVersionUID = 1L;
private Webcam webcam = null;
private WebcamPanel panel = null;
private WebcamPicker picker = null;
@Override
public void run() {
Webcam.addDiscoveryListener(this);
setTitle("Java Webcam Capture POC");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
addWindowListener(this);
picker = new WebcamPicker();
picker.addItemListener(this);
webcam = picker.getSelectedWebcam();
if (webcam == null) {
System.out.println("No webcams found...");
System.exit(1);
}
webcam.setViewSize(WebcamResolution.VGA.getSize());
webcam.addWebcamListener(WebcamViewerExample.this);
panel = new WebcamPanel(webcam, false);
panel.setFPSDisplayed(true);
add(picker, BorderLayout.NORTH);
add(panel, BorderLayout.CENTER);
pack();
setVisible(true);
Thread t = new Thread() {
@Override
public void run() {
panel.start();
}
};
t.setName("example-starter");
t.setDaemon(true);
t.setUncaughtExceptionHandler(this);
t.start();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new WebcamViewerExample());
}
@Override
public void webcamOpen(WebcamEvent we) {
System.out.println("webcam open");
}
@Override
public void webcamClosed(WebcamEvent we) {
System.out.println("webcam closed");
}
@Override
public void webcamDisposed(WebcamEvent we) {
System.out.println("webcam disposed");
}
@Override
public void webcamImageObtained(WebcamEvent we) {
// do nothing
}
@Override
public void windowActivated(WindowEvent e) {
}
@Override
public void windowClosed(WindowEvent e) {
webcam.close();
}
@Override
public void windowClosing(WindowEvent e) {
}
@Override
public void windowOpened(WindowEvent e) {
}
@Override
public void windowDeactivated(WindowEvent e) {
}
@Override
public void windowDeiconified(WindowEvent e) {
System.out.println("webcam viewer resumed");
panel.resume();
}
@Override
public void windowIconified(WindowEvent e) {
System.out.println("webcam viewer paused");
panel.pause();
}
@Override
public void uncaughtException(Thread t, Throwable e) {
System.err.println(String.format("Exception in thread %s", t.getName()));
e.printStackTrace();
}
@Override
public void itemStateChanged(ItemEvent e) {
if (e.getItem() != webcam) {
if (webcam != null) {
panel.stop();
remove(panel);
webcam.removeWebcamListener(this);
webcam.close();
webcam = (Webcam) e.getItem();
webcam.setViewSize(WebcamResolution.VGA.getSize());
webcam.addWebcamListener(this);
System.out.println("selected " + webcam.getName());
panel = new WebcamPanel(webcam, false);
panel.setFPSDisplayed(true);
add(panel, BorderLayout.CENTER);
pack();
Thread t = new Thread() {
@Override
public void run() {
panel.start();
}
};
t.setName("example-stoper");
t.setDaemon(true);
t.setUncaughtExceptionHandler(this);
t.start();
}
}
}
@Override
public void webcamFound(WebcamDiscoveryEvent event) {
if (picker != null) {
picker.addItem(event.getWebcam());
}
}
@Override
public void webcamGone(WebcamDiscoveryEvent event) {
if (picker != null) {
picker.removeItem(event.getWebcam());
}
}
}