不废话,直接上代码
#test01.java
import org.bytedeco.javacv.*;
import org.bytedeco.javacv.Frame;
import org.junit.Test;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class test01 {
@Test
public static void main(String[] args) throws InterruptedException, FrameGrabber.Exception {
OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0);
grabber.start(); //开始获取摄像头数据
// CanvasFrame canvas = new CanvasFrame("摄像头");//新建一个窗口
// canvas.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
// canvas.setAlwaysOnTop(true);
int i = 0 ;
while (true) {
if (!canvasFrame.isDisplayable()) {//窗口是否关闭
grabber.stop();//停止抓取
System.exit(-1);//退出
}
i++;
Frame frame = grabber.grab();
doExecuteFrame(frame,i+".jpg");
//canvas.showImage(frame);//获取摄像头图像并放到窗口上显示, 这里的Frame frame=grabber.grab(); frame是一帧视频图像
Thread.sleep(50);//50毫秒刷新一次图像
}
}
@Test
public void aa() throws FrameGrabber.Exception, InterruptedException {
VideoInputFrameGrabber grabber = VideoInputFrameGrabber.createDefault(0);
grabber.start();
// CanvasFrame canvasFrame = new CanvasFrame("摄像头");
// canvasFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
// canvasFrame.setAlwaysOnTop(true);
int i = 0 ;
while (true) {
i++;
if (i==10) {
grabber.stop();
System.exit(-1);
}
Frame frame = grabber.grab();
doExecuteFrame(frame,i+".jpg");
// canvasFrame.showImage(frame);
Thread.sleep(1);
}
}
/**
*
* @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();
}
}
}
#pom.xml
<dependencies>
<!-- 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>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv</artifactId>
<version>1.4.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>compile</scope>
</dependency>
</dependencies>