我有一种形式,我想捕获人的图像并显示表单中的图像。

如何通过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) {
        }
    }
}
.

另一种替代方案是使用Java Media Framework( JMF )。您可以找到一个示例

其他提示

您可以使用网络摄像头捕获项目执行此操作。它正在使用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归因
不隶属于 StackOverflow
scroll top