这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
虽然父类要求子类必须实现这三个方法:initOutput、output、releaseOutputResource,但是实际上只有output方法中有代码,其他两个是空方法;
新建文件GrabImageFromCamera.java,这是AbstractCameraApplication的子类,其代码很简单,接下来按上图顺序依次说明
定义三个成员变量,作用分别是:指定图片文件存放路径(请自行调整)、图片格式、当前进程已存储图片数量:
// 图片存储路径的前缀(请根据自己电脑情况调整) protected String IMAGE_PATH_PREFIX = "E:\\temp\\202111\\28\\camera-" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + "-"; // 图片格式 private final static String IMG_TYPE = "jpg"; /** * 当前进程已经存储的图片数量 */ private int saveNums = 0;
@Override protected void initOutput() throws Exception { // 啥也不用做 } @Override protected void releaseOutputResource() { // 啥也不用做 }
@Override protected void output(Frame frame) throws Exception { // 图片的保存位置 String imagePath = IMAGE_PATH_PREFIX + (saveNums++) + "." + IMG_TYPE; // 把帧对象转为Image对象 BufferedImage bufferedImage = converter.getBufferedImage(frame); // 保存图片 ImageIO.write(bufferedImage, IMG_TYPE, new FileOutputStream(imagePath)); log.info("保存完成:{}", imagePath); }
@Override protected int getInterval() { // 表示保存一张图片后会sleep一秒钟 return 1000; }
public static void main(String[] args) { // 连续十秒执行抓图操作 new GrabImageFromCamera().action(10); }
... 08:57:42.393 [main] INFO com.bolingcavalry.grabpush.camera.AbstractCameraApplication - 初始化完成,耗时[8515]毫秒,帧率[30.0],图像宽度[1280],图像高度[720] 08:57:43.110 [main] INFO com.bolingcavalry.grabpush.camera.GrabImageFromCamera - 保存完成:E:\temp\202111\28\camera-20211130085733-0.jpg 08:57:44.155 [main] INFO com.bolingcavalry.grabpush.camera.GrabImageFromCamera - 保存完成:E:\temp\202111\28\camera-20211130085733-1.jpg 08:57:45.193 [main] INFO com.bolingcavalry.grabpush.camera.GrabImageFromCamera - 保存完成:E:\temp\202111\28\camera-20211130085733-2.jpg 08:57:46.243 [main] INFO com.bolingcavalry.grabpush.camera.GrabImageFromCamera - 保存完成:E:\temp\202111\28\camera-20211130085733-3.jpg 08:57:47.287 [main] INFO com.bolingcavalry.grabpush.camera.GrabImageFromCamera - 保存完成:E:\temp\202111\28\camera-20211130085733-4.jpg 08:57:48.348 [main] INFO com.bolingcavalry.grabpush.camera.GrabImageFromCamera - 保存完成:E:\temp\202111\28\camera-20211130085733-5.jpg 08:57:49.430 [main] INFO com.bolingcavalry.grabpush.camera.GrabImageFromCamera - 保存完成:E:\temp\202111\28\camera-20211130085733-6.jpg 08:57:50.479 [main] INFO com.bolingcavalry.grabpush.camera.GrabImageFromCamera - 保存完成:E:\temp\202111\28\camera-20211130085733-7.jpg 08:57:51.547 [main] INFO com.bolingcavalry.grabpush.camera.GrabImageFromCamera - 保存完成:E:\temp\202111\28\camera-20211130085733-8.jpg 08:57:52.551 [main] INFO com.bolingcavalry.grabpush.camera.AbstractCameraApplication - 输出结束 [ WARN:0] global D:\a\javacpp-presets\javacpp-presets\opencv\cppbuild\windows-x86_64\opencv-4.5.3\modules\videoio\src\cap_msmf.cpp (438) `anonymous-namespace'::SourceReaderCB::~SourceReaderCB terminating async callback Process finished with exit code 0
名称 | 链接 | 备注 |
---|---|---|
项目主页 | https://github.com/zq2599/blog_demos | 该项目在GitHub上的主页 |
git仓库地址(https) | https://github.com/zq2599/blog_demos.git | 该项目源码的仓库地址,https协议 |
git仓库地址(ssh) | git@github.com:zq2599/blog_demos.git | 该项目源码的仓库地址,ssh协议 |
https://github.com/zq2599/blog_demos