乐趣区

关于云计算:JavaCV的摄像头实战之二本地窗口预览

欢送拜访我的 GitHub

https://github.com/zq2599/blog_demos

内容:所有原创文章分类汇总及配套源码,波及 Java、Docker、Kubernetes、DevOPS 等;

本篇概览

  • 前文《JavaCV 的摄像头实战之一:根底》曾经为整个系列做好了铺垫,接下来的文章会专一于如何应用来自摄像头的数据,本篇先从最简略的开始:本地窗口预览

编码

  • 前文创立的 <font color=”red”>simple-grab-push</font> 工程中曾经筹备好了父类 <font color=”blue”>AbstractCameraApplication</font>,所以本篇持续应用该工程,创立子类实现那些形象办法即可
  • 编码前先回顾父类的根底构造,如下图,粗体是父类定义的各个办法,红色块都是须要子类来实现形象办法,所以接下来,咱们以本地窗口预览为指标实现这三个红色办法即可:

  • 新建文件 <font color=”blue”>PreviewCamera.java</font>,这是 AbstractCameraApplication 的子类,其代码很简略,接下来按上图程序顺次阐明
  • 先定义 CanvasFrame 类型的成员变量 previewCanvas,这是展现视频帧的本地窗口:
protected CanvasFrame previewCanvas
  • 而后是初始化操作,可见是 previewCanvas 的实例化和参数设置:
@Override
    protected void initOutput() {previewCanvas = new CanvasFrame("摄像头预览", CanvasFrame.getDefaultGamma() / grabber.getGamma());
        previewCanvas.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        previewCanvas.setAlwaysOnTop(true);
    }
  • 接下来是 output 办法,定义了拿到每一帧视频数据后做什么事件,这里是在本地窗口显示:
@Override
    protected void output(Frame frame) {
        // 预览窗口上显示以后帧
        previewCanvas.showImage(frame);
    }
  • 最初是解决视频的循环完结后,程序退出前要做的事件,即敞开本地窗口:
@Override
    protected void releaseOutputResource() {if (null!= previewCanvas) {previewCanvas.dispose();
        }
    }
  • 至此,用本地窗口预览摄像头的性能已开发实现,再写上 main 办法,留神参数 <font color=”red”>1000</font> 示意预览持续时间是 1000 秒:
public static void main(String[] args) {new PreviewCamera().action(1000);
    }
  • 运行 main 办法,如下图,摄像头顺利工作,左上角的工夫水印也能失常显示(可见明天深圳的天气不错,应该进来走走,而不是在家写博客 …):

  • 至此,咱们已实现了本地窗口预览性能,得益于 JavaCV 的弱小,整个过程是如此的轻松愉快,接下来请持续关注欣宸原创,《JavaCV 的摄像头实战》系列还会出现更多丰盛的利用;

源码下载

  • 《JavaCV 的摄像头实战》的残缺源码可在 GitHub 下载到,地址和链接信息如下表所示 (https://github.com/zq2599/blo…):
名称 链接 备注
我的项目主页 https://github.com/zq2599/blo… 该我的项目在 GitHub 上的主页
git 仓库地址 (https) https://github.com/zq2599/blo… 该我的项目源码的仓库地址,https 协定
git 仓库地址 (ssh) git@github.com:zq2599/blog_demos.git 该我的项目源码的仓库地址,ssh 协定
  • 这个 git 我的项目中有多个文件夹,本篇的源码在 <font color=”blue”>javacv-tutorials</font> 文件夹下,如下图红框所示:

  • <font color=”blue”>javacv-tutorials</font> 外面有多个子工程,《JavaCV 的摄像头实战》系列的代码在 <font color=”red”>simple-grab-push</font> 工程下:

你不孤独,欣宸原创一路相伴

https://github.com/zq2599/blog_demos

退出移动版