在Java中从网络摄像头捕获图像?

如何连续从摄像头捕获图像?

我想尝试对象识别(也许使用Java Media Framework)。

我当时正在考虑创建两个线程

一个线程:

  • 节点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中从网络摄像头捕获图像? 的全部内容, 来源链接: utcz.com/qa/417109.html

回到顶部