JavaCV的摄像头实战之二:本地窗口预览

欢迎访问我的GitHub

https://github.com/zq2599/blog_demos

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

本篇概览

编码

  • 前文创建的simple-grab-push工程中已经准备好了父类AbstractCameraApplication,所以本篇继续使用该工程,创建子类实现那些抽象方法即可
  • 编码前先回顾父类的基础结构,如下图,粗体是父类定义的各个方法,红色块都是需要子类来实现抽象方法,所以接下来,咱们以本地窗口预览为目标实现这三个红色方法即可:

JavaCV的摄像头实战之二:本地窗口预览
  • 新建文件PreviewCamera.java,这是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方法,注意参数 1000表示预览持续时间是1000秒:
public static void main(String[] args) {
        new PreviewCamera().action(1000);
    }
  • 运行main方法,如下图,摄像头顺利工作,左上角的时间水印也能正常显示(可见今天深圳的天气不错,应该出去走走,而不是在家写博客…):

JavaCV的摄像头实战之二:本地窗口预览
  • 至此,咱们已完成了本地窗口预览功能,得益于JavaCV的强大,整个过程是如此的轻松愉快,接下来请继续关注欣宸原创,《JavaCV的摄像头实战》系列还会呈现更多丰富的应用;

源码下载

名称 链接 备注 项目主页
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协议

  • 这个git项目中有多个文件夹,本篇的源码在javacv-tutorials文件夹下,如下图红框所示:

JavaCV的摄像头实战之二:本地窗口预览
  • javacv-tutorials里面有多个子工程,《JavaCV的摄像头实战》系列的代码在 simple-grab-push工程下:

JavaCV的摄像头实战之二:本地窗口预览

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

https://github.com/zq2599/blog_demos

Original: https://www.cnblogs.com/bolingcavalry/p/15838131.html
Author: 程序员欣宸
Title: JavaCV的摄像头实战之二:本地窗口预览

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/684152/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • SpringBoot整合参数校验的两种方式应用实践

    背景:SpringBoot秒杀小项目实现了两种参数校验方式1.原登录业务逻辑处理使用的正则表达式校验手机号格式输入(未使用Validation参数校验,只是简单实现)2.更改业务逻…

    技术杂谈 2023年7月25日
    081
  • mac Zip 常用命令

    -q 表示不显示压缩进度状态 -r 表示子目录子文件全部压缩为zip //这部比较重要,不然的话只有something这个文件夹被压缩,里面的没有被压缩进去 -e 表示你的压缩文件…

    技术杂谈 2023年5月31日
    064
  • Kubernetes 集群尝试基于 Calico 启用 eBPF

    前提条件:Ubuntu 版本至少 20.04,确认 BPF 文件系统是否已挂载 mount | grep "/sys/fs/bpf" none on /sys/…

    技术杂谈 2023年5月30日
    083
  • 下载资源一定要小心

    下载了一本电子书,发现不简单; 下载 解压 压缩包里面的 下载器 对于这种 下载器 一般需要谨慎!!! 国内的一般会各种 捆绑 恶意 软件 套装 国外的一般后 捆绑各种 勒索 病毒…

    技术杂谈 2023年5月31日
    0102
  • Netty源码分析之ByteBuf引用计数

    引用计数是一种常用的内存管理机制,是指将资源的被引用次数保存起来,当被引用次数变为零时就将其释放的过程。Netty在4.x版本开始使用引用计数机制进行部分对象的管理,其实现思路并不…

    技术杂谈 2023年7月25日
    061
  • 软件测试基础理论

    软件基础的理论 一, 什么是软件产品 它是一个逻辑产品,没有实体,包括程序,文档和数据,需要通过终端设备才能体现出来功能和作用 二, 软件产品的中间过程文档 客户需求 &#…

    技术杂谈 2023年7月25日
    079
  • Ansible学习笔记

    相关资料 使用总结 介绍 Ansible安装 Ansible配置文件和命令 配置文件概述 Ansible系列命令 Ansible命令使用 Ansible命令参数中的Host-pat…

    技术杂谈 2023年7月10日
    090
  • 关于docker创建了mysql容器但却启动不了的解决办法

    使用以下命令挂载mysql配置文件目录和数据文件 docker run -p 3306:3306 –name mysql57 \ -v /wfd/mysql/conf:/etc/…

    技术杂谈 2023年7月11日
    094
  • documentFragment深入理解

    documentFragment深入理解 抽疯的稻草绳关注 0.4482020.12.27 16:42:40字数 178阅读 3,225 documentFragment是一个保存…

    技术杂谈 2023年6月1日
    097
  • docker search和pull超时

    练习时用docker查找镜像或者pull镜像时总是超时,折腾一圈发现是 时钟同步的问题,实验环境的时间偏差太大,重新同步一次就ok了。 #ntpdate cn.pool.ntp.o…

    技术杂谈 2023年7月10日
    067
  • 开发当中curl简单使用

    curl是linux上可以发送http请求的命令。当然Postman是一个很好的接口调用管理工具,但在验证一个linux服务器调用另外一个linux服务器API是否可用的场景下,非…

    技术杂谈 2023年7月25日
    083
  • HTTP协议和SOCKS5协议

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/panxuejun/p/10584993.htmlAut…

    技术杂谈 2023年5月30日
    085
  • [python]-SimpleITK模块-医学影像标注nii.gz文件的读取与保存

    SimpleITK模块以多种语言为 ITK 提供简化的接口,支持Python、R、Java、C#、Lua、Ruby、TCL 和 C++ 中的开源多维图像分析,由 Insight T…

    技术杂谈 2023年7月10日
    0137
  • Mac流量监控/硬盘监控小工具

    效果: 中文版: https://member.ipmu.jp/yuji.tachikawa/MenuMetersElCapitan/ 官方版: https://github.co…

    技术杂谈 2023年5月30日
    0109
  • 老司机学Xamarin系列总目录

    Xamarin开发环境及开发框架初探 Xamarin Forms开发框架二探 (Prism vs MvvmCross) Xamarin Forms开发框架之MvvmCross插件精…

    技术杂谈 2023年6月1日
    0112
  • Gitee多分支提交被拒

    方法一首先 git log 查看commit记录, 找到远端本地冲突之前的commit git reset –soft [commitID] 1、git pull origin …

    技术杂谈 2023年6月21日
    080
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球