码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • JavaCV开发详解之1:调用本机摄像头并预览摄像头图像画面视频(建议使用javaCV最新版本)


    JavaCV免费教程目录:

    JavaCV入门教程(免费JavaCV教程)

    javacv实战专栏目录(2016年更新至今):

    JavaCV实战专栏文章目录(2016年更新至今)

    2022年最新JavaCV最新音视频教程目录:

    JavaCV音视频教程目录(2022年最新JavaCV教程)


    前言

    javacv开发包是用于支持java多媒体开发的一套开发包,可以适用于本地多媒体(音视频)调用以及音视频,图片等文件后期操作(图片修改,音视频解码剪辑等等功能),这里只使用最简单的本地摄像头调用来演示一下javacv的基础功能

    1、依赖配置说明

    依赖配置问题可以参考博主另一篇文章:JavaCV更新到1.5.x版本后的依赖问题说明以及如何精简依赖包大小

    如何精简javacv依赖,达到最小依赖包:JavaCV精简依赖包:如何只依赖本地平台所需的最小依赖包

    (注意:从其他地方下载的依赖包请积极开心的替换为官方jar包和博主提供jar包;如果使用其他jar包版本而导致出错,不要急着找博主问为啥会报错,先把jar包替换了再试试看)

    maven和gradle方式如果想要减小依赖包大小,则需要手动进行排除不需要的平台依赖即可

    (1)使用maven添加依赖

      <dependency>
        <groupId>org.bytedeco</groupId>
        <artifactId>javacv-platform</artifactId>
        <version>1.4.4</version>
      </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    (2)使用gradle添加依赖

    dependencies {
        compile group: 'org.bytedeco', name: 'javacv-platform', version: '1.4.4'
      }
    
    • 1
    • 2
    • 3

    (3)使用本地jar包方式

    最新版实在太大,需要下载全量包的请到官方github.com/bytedeco/javacv下载

    2、为什么不需要安装opencv?

    从javacv0.8开始,已经不需要本地安装opencv,直接通过引用opencv对应的系统平台的引用包即可。

    (比如oepncv-windows-x86_64.jar就是典型的64位windows环境依赖包)

    3、获取摄像头视频

    最终调用的摄像头实时视频图像界面:

    预览本机摄像头视频图像的简单实现(由于之前csdn的注释被屏蔽,重新精简优化了代码):

    package cc.eguid.javacv;
    
    import javax.swing.JFrame;
    
    import org.bytedeco.javacv.CanvasFrame;
    import org.bytedeco.javacv.OpenCVFrameConverter;
    import org.bytedeco.javacv.FrameGrabber.Exception;
    import org.bytedeco.javacv.OpenCVFrameGrabber;
    
    /**
     * 调用本地摄像头窗口视频
     * @author eguid  
     * @date 2016年6月13日
     * @since  javacv1.2
     */
    public class JavavcCameraTest{
      public static void main(String[] args) throws Exception, InterruptedException{
    
        OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0);//新建opencv抓取器,一般的电脑和移动端设备中摄像头默认序号是0,不排除其他情况
        grabber.start();//开始获取摄像头数据
    
        CanvasFrame canvas = new CanvasFrame("摄像头预览");//新建一个预览窗口
        canvas.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    
        //窗口是否关闭
        while(canvas.isDisplayable()){
          /*获取摄像头图像并在窗口中显示,这里Frame frame=grabber.grab()得到是解码后的视频图像*/
          canvas.showImage(grabber.grab());
        }
        grabber.close();//停止抓取
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    是不是很简单,原本很复杂的流媒体操作,javaCV能够帮助我们快速实现。

    下一章将会讲解如何把本地摄像头的视频录制成文件以及推送到流媒体服务器:

    javaCV开发详解之2:推流器实现和摄像头录制视频功能(支持windows/linux/mac/Android/ios全平台)

    如果觉得博主写得还不错,欢迎“关注、收藏、点赞”一键三连!

    end


    当前JavaCV免费教程目录:

    JavaCV免费教程_eguid-CSDN博客


    其他JavaCV专栏推荐:

    2022年最新JavaCV最新音视频教程目录:

    JavaCV音视频教程目录(2022年最新JavaCV教程)

    JavaCV入门指南专栏

    JavaCV入门指南:序章(看完本章后,不想看原理的小伙伴可直接跳转到《快速上手篇》)

    JavaCV入门指南:调用FFmpeg原生API和JavaCV是如何封装了FFmpeg的音视频操作

    JavaCV入门指南:调用opencv原生API和JavaCV是如何封装了opencv的图像处理操作

    JavaCV入门指南:帧抓取器(FrameGrabber)的原理与应用

    JavaCV入门指南:帧录制器/推流器(FrameRecorder)的原理与应用

    JavaCV入门指南:帧过滤器(FrameFilter)的原理与应用

    JavaCV入门指南:FrameConverter转换工具类及CanvasFrame图像预览工具类

    《快速上手篇》(为了区别,单独划分):

    JavaCV入门指南之快速上手篇:快速上手视频拉流、推流、录制文件、录屏、截图和编解码复用解复用等常用音视频处理操作

    javacv进阶tesserac文字识别系列:

    javaCV文字识别之1:基于google的tesserac ocr识别图片中的文字,跨平台支持英文中文简体繁体等各种字符识别

    javaCV文字识别之2:视频文字识别和视频提取字幕文字字符

    javacv进阶ffmpeg系列:

    javacpp-FFmpeg系列之1:视频拉流解码成YUVJ420P,并保存为jpg图片

    javacpp-FFmpeg系列之2:通用拉流解码器,支持视频拉流解码并转换为YUV、BGR24或RGB24等图像像素数据

    javacpp-FFmpeg系列之3: 图像数据转换(BGR与BufferdImage互转,RGB与BufferdImage互转)

    javacpp-FFmpeg系列补充:FFmpeg解决avformat_find_stream_info检索时间过长问题

    javacv进阶opencv系列:

    javaCV图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体、位置、大小、粗度、翻转、平滑等操作

    javaCV图像处理之2:实时视频添加图片水印,实现不同大小图片叠加,图像透明度控制

    javacv图像处理3:使用opencv原生方法遍历摄像头设备及调用(方便多摄像头遍历及调用,相比javacv更快的摄像头读取速度和效率,方便读取后的图像处理)

    javacv图像处理系列:国内车辆牌照检测识别系统(万份测试准确率99.7%以上)

    javacv人脸检测识别:

    JavaCV进阶opencv图像处理:摄像头画面人脸检测

    JavaCV进阶opencv图像处理:ffmpeg视频图像画面人脸检测

    JavaCV进阶opencv图像处理:批量人脸图像分类训练

    JavaCV进阶opencv图像处理:摄像头图像人脸识别

  • 相关阅读:
    【JavaSE】-4-单层循环结构
    php在header增加key,sign,timestamp,实现鉴权
    go语言的channel笔记
    [C++]继承
    // 029 方阵行列互换
    Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】
    CTF-PWN-tips
    【总结】助力2022年全国大学生数学建模 — 预测模型总结篇(万字总结)
    嵌入式Linux驱动开发(LCD屏幕专题)(三)
    基于MPPT的太阳能光伏电池simulink性能仿真,对比扰动观察法,增量电导法,恒定电压法
  • 原文地址:https://blog.csdn.net/m0_67400973/article/details/125438708
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号