[英]How to handle webcam unplug then replug for sarxos java webcam?
[英]How to connect to webcam in Java?
我有一个表单,我想要捕获人的图像并在表单中显示该图像。
如何通过java连接到网络摄像头并在表单中显示该图像?
您可以使用JavaCV来捕获图像。
这段代码应该让你入门(从这里开始):
import com.googlecode.javacv.CanvasFrame;
import com.googlecode.javacv.FrameGrabber;
import com.googlecode.javacv.VideoInputFrameGrabber;
import com.googlecode.javacv.cpp.opencv_core.IplImage;
public class GrabberShow implements Runnable {
//final int INTERVAL=1000;///you may use interval
IplImage image;
CanvasFrame canvas = new CanvasFrame("Web Cam");
public GrabberShow() {
canvas.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
}
@Override
public void run() {
FrameGrabber grabber = new VideoInputFrameGrabber(0);
int i=0;
try {
grabber.start();
IplImage img;
while (true) {
img = grabber.grab();
if (img != null) {
cvFlip(img, img, 1);// l-r = 90_degrees_steps_anti_clockwise
cvSaveImage((i++)+"-capture.jpg", img);
// show image on window
canvas.showImage(img);
}
//Thread.sleep(INTERVAL);
}
} catch (Exception e) {
}
}
}
您可以使用Webcam Capture项目来执行此操作。 它适用于Windows XP,Vista,7,Linux,Mac OS,Raspberry Pi等。 有一个现成的Swing组件,可以扩展JPanel,可以用来显示网络摄像头的图像。 请参阅此示例以获取有关如何执行此操作的更多详细信息 - 它提供了此组件的一些高级功能,但基本用法如下:
JFrame window = new JFrame("Test webcam panel");
window.add(new WebcamPanel(Webcam.getDefault()));
window.pack();
window.setVisible(true);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
运行此代码后,您应该看到JFrame中包含来自网络摄像头的图像。
Webcam.setAutoOpenMode(true);
BufferedImage image = Webcam.getDefault().getImage();
ImageIO.write(image, "PNG", new File("F:/test.png"));
可以从https://github.com/sarxos/webcam-capture下载最新版本
并在zip文件中添加其他库文件
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.