添加依赖
<!-- https://mvnrepository.com/artifact/org.bytedeco/javacv-platform -->
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv-platform</artifactId>
<version>1.4.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.bytedeco.javacpp-presets/opencv-platform -->
<dependency>
<groupId>org.bytedeco.javacpp-presets</groupId>
<artifactId>opencv-platform</artifactId>
<version>3.4.1-1.4.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
简单测试Java调用本地摄像头
OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0);//0表示本机摄像头 当然这里也可以换成网络摄像头地址
grabber.start(); //开始获取摄像头数据
CanvasFrame canvas = new CanvasFrame("摄像头");//新建一个窗口
canvas.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//窗口关闭时程序运行结束
canvas.setAlwaysOnTop(true);
while(true){
if(!canvas.isDisplayable()){//窗口是否关闭
System.out.println("已关闭");
grabber.stop();//停止抓取
System.exit(2);//退出
}
canvas.showImage(grabber.grab());//获取摄像头图像并放到窗口上显示, 这里的Frame frame=grabber.grab(); frame是一帧视频图像
Thread.sleep(50);//50毫秒刷新一次图像
}
调用摄像头并抓拍图片保存到本地
public class Javacv {
public static void main(String[] args) throws FrameGrabber.Exception, InterruptedException {
OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0);//0表示本机摄像头 当然这里也可以换成网络摄像头地址
grabber.start(); //开始获取摄像头数据
CanvasFrame canvas = new CanvasFrame("摄像头");//新建一个窗口
canvas.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//窗口关闭时程序运行结束
canvas.setAlwaysOnTop(true);
int i=0;
while(true){
if(!canvas.isDisplayable()){//窗口是否关闭
System.out.println("已关闭");
grabber.stop();//停止抓取
System.exit(2);//退出
}
canvas.showImage(grabber.grab());//获取摄像头图像并放到窗口上显示, 这里的Frame frame=grabber.grab(); frame表示一帧视频图像
//调用doExecuteFrame()方法,将截取的图片保存在本地
doExecuteFrame(grabber.grabFrame(),"F:/new/"+i+".jpg");
Thread.sleep(50);//50毫秒刷新一次图像
i++;
}
}
/**
*
* @param f 表示帧
* @param targetFileName 存储路径
*/
public static void doExecuteFrame(Frame f, String targetFileName) {
if (null ==f ||null ==f.image) {
return;
}
Java2DFrameConverter converter =new Java2DFrameConverter();
BufferedImage bi =converter.getBufferedImage(f);
File output =new File(targetFileName);
try {
ImageIO.write(bi,"jpg",output);
}catch (IOException e) {
e.printStackTrace();
}
}
}
版权声明:本文为weixin_43897604原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。