javacv基础02-调用本机摄像头并预览摄像头图像画面视频

引入架包:

cpp 复制代码
  <dependency>
            <groupId>org.openpnp</groupId>
            <artifactId>opencv</artifactId>
            <version>4.5.5-1</version>
        </dependency>
        <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>ffmpeg-platform</artifactId>
            <version>5.0-1.5.7</version>
        </dependency>

调用本地视频头示例

cpp 复制代码
package com.example.javacvstudy;


import org.bytedeco.javacv.*;
import org.springframework.boot.test.context.SpringBootTest;
import javax.swing.*;

@SpringBootTest
class ReadCanmen {


    public static void main(String[] args) throws FrameGrabber.Exception, InterruptedException {

        OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0);
        grabber.start();   //开始获取摄像头数据
        CanvasFrame canvas = new CanvasFrame("摄像头");//新建一个窗口
        canvas.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        canvas.setAlwaysOnTop(true);
        while(true){
            if(!canvas.isDisplayable()){//窗口是否关闭
                grabber.stop();//停止抓取
                System.exit(2);//退出
                break;
            }
            canvas.showImage(grabber.grab());//获取摄像头图像并放到窗口上显示, 这里的Frame frame=grabber.grab(); frame是一帧视频图像
            Thread.sleep(200);//50毫秒刷新一次图像
        }

    }


}

运行效果:

注意:

1、maven依赖后,会导致整个项目工程打包发布后的体积变得十分巨大

原因是ffmpeg和opencv两个依赖默认会把android,ios,linux,macos,windows以及各自不同cpu芯片下,86/64等所有版本的Jar会全部依赖进来,项目打包后体积剧增500M+

解决方法也比较简单,只需要根据我们生产环境真实平台环境,选取其中1个Jar包就可以了。下面以Linux 64位操作系统为例,maven配置如下:

cpp 复制代码
<!-- javacv依赖 -->
<dependency>
	  <groupId>org.bytedeco</groupId>
	  <artifactId>javacv</artifactId>
	   <version>4.5.5-1</version>
</dependency>
<!-- 引入ffmpeg依赖时单独把linux 64位的ffmpeg依赖引入即可 -->
<dependency>
	  <groupId>org.bytedeco.javacpp-presets</groupId>
	  <artifactId>ffmpeg</artifactId>
	  <version>5.0-1.5.7</version>
	  <classifier>linux-x86_64</classifier>
</dependency>
<!-- 引入ffmpeg依赖时单独把linux 64位的opencv依赖引入即可 -->
<dependency>
	  <groupId>org.bytedeco.javacpp-presets</groupId>
	  <artifactId>opencv</artifactId>
	  <version>4.5.5-1</version>
	  <classifier>linux-x86_64</classifier>
</dependency>
相关推荐
unique_perfect19 分钟前
vue2与springboot实现deepseek打印机聊天
spring boot·websocket·ai·vue2·deepseek
java1234_小锋23 分钟前
Spring IoC的实现机制是什么?
java·后端·spring
JS-s34 分钟前
【无标题】
音视频
xqqxqxxq1 小时前
背单词软件技术笔记(V2.0扩展版)
java·笔记·python
消失的旧时光-19431 小时前
深入理解 Java 线程池(二):ThreadPoolExecutor 执行流程 + 运行状态 + ctl 原理全解析
java·开发语言
哈哈老师啊1 小时前
Springboot学生综合测评系统hxtne(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
java·数据库·spring boot
4311媒体网1 小时前
帝国cms调用文章内容 二开基本操作
java·开发语言·php
Coding茶水间2 小时前
基于深度学习的反光衣检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
图像处理·人工智能·深度学习·yolo·目标检测·机器学习·计算机视觉
zwxu_2 小时前
Nginx NIO对比Java NIO
java·nginx·nio
可观测性用观测云3 小时前
Pyroscope Java 接入最佳实践
java