在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