从java摄像头捕获图像?

我如何从摄像头连续捕捉图像?

我想试验对象识别(也许使用Java媒体框架)。

我正在考虑创建两个线程

一个线程:

  • 节点1:捕捉实时图像
  • 节点2:将图像保存为“1.jpg”
  • 节点3:等待5秒钟
  • 节点4:重复...
  • 其他线程:

  • 节点1:等待图像被捕获
  • 节点2:使用“1.jpg”可以获得每个像素的颜色
  • 节点3:将数据保存在数组中
  • 节点4:重复...

  • 这个JavaCV实现工作正常。

    码:

    import org.bytedeco.javacv.*;
    
    import static org.bytedeco.javacpp.opencv_core.IplImage;
    import static org.bytedeco.javacpp.opencv_core.cvFlip;
    import static org.bytedeco.javacpp.opencv_imgcodecs.cvSaveImage;
    
    
    /**
     * Created by gtiwari on 1/3/2017.
     */
    
    public class Test implements Runnable {
        final int INTERVAL = 100;///you may use interval
        CanvasFrame canvas = new CanvasFrame("Web Cam");
    
        public Test() {
            canvas.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
        }
    
        public void run() {
    
            FrameGrabber grabber = new VideoInputFrameGrabber(0); // 1 for next camera
            OpenCVFrameConverter.ToIplImage converter = new OpenCVFrameConverter.ToIplImage();
            IplImage img;
            int i = 0;
            try {
                grabber.start();
                while (true) {
                    Frame frame = grabber.grab();
    
                    img = converter.convert(frame);
    
                    //the grabbed frame will be flipped, re-flip to make it right
                    cvFlip(img, img, 1);// l-r = 90_degrees_steps_anti_clockwise
    
                    //save
                    cvSaveImage((i++) + "-aa.jpg", img);
    
                    canvas.showImage(converter.convert(img));
    
                    Thread.sleep(INTERVAL);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public static void main(String[] args) {
            Test gs = new Test();
            Thread th = new Thread(gs);
            th.start();
        }
    }
    

    JavaCV的配置也有提示

    您可以修改代码并能够定期保存图像,并执行所需的其他处理。


    前段时间我创建了一个通用的Java库,可用于通过PC摄像头拍照。 API非常简单,不会过度使用,可以独立工作,但也支持像OpenIMAJ,JMF,FMJ,LTI-CIVIL等其他网络摄像头驱动程序,以及一些IP摄像头。

    该项目的链接是https://github.com/sarxos/webcam-capture

    示例代码(拍照并保存在test.jpg中):

    Webcam webcam = Webcam.getDefault();
    webcam.open();
    BufferedImage image = webcam.getImage();
    ImageIO.write(image, "JPG", new File("test.jpg"));
    

    它也可以在Maven Central Repository中获得,或者作为一个单独的ZIP包含所有必需的依赖关系和第三方JAR。


    JMyron使用非常简单。 http://webcamxtra.sourceforge.net/

    myron = new JMyron();
    myron.start(imgw, imgh);
    myron.update();
    int[] img = myron.image();
    
    链接地址: http://www.djcxy.com/p/81009.html

    上一篇: Capturing image from webcam in java?

    下一篇: C# WPF Capture Keyboard and Mouse