https://github.com/zq2599/blog_demos
内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;
前文创建的simple-grab-push工程中已经准备好了父类AbstractCameraApplication,所以本篇继续使用该工程,创建子类实现那些抽象方法即可
编码前先回顾父类的基础结构,如下图,粗体是父类定义的各个方法,红色块都是需要子类来实现抽象方法,所以接下来,咱们以本地窗口预览为目标实现这三个红色方法即可:
新建文件PreviewCamera.java,这是AbstractCameraApplication的子类,其代码很简单,接下来按上图顺序依次说明
先定义CanvasFrame类型的成员变量previewCanvas,这是展示视频帧的本地窗口:
protected CanvasFrame previewCanvas
@Override protected void initOutput() { previewCanvas = new CanvasFrame("摄像头预览", CanvasFrame.getDefaultGamma() / grabber.getGamma()); previewCanvas.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); previewCanvas.setAlwaysOnTop(true); }
@Override protected void output(Frame frame) { // 预览窗口上显示当前帧 previewCanvas.showImage(frame); }
@Override protected void releaseOutputResource() { if (null!= previewCanvas) { previewCanvas.dispose(); } }
public static void main(String[] args) { new PreviewCamera().action(1000); }
名称 | 链接 | 备注 |
---|---|---|
项目主页 | 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