javacv开发详解之调用本机摄像头视频

 更新时间:2021年04月22日 10:00:49   作者:eguid_1  
这篇文章主要介绍了javacv开发详解之调用本机摄像头视频,对javacv感兴趣的同学,可以参考下

前言

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

重要:

建议使用最新javaCV1.5版本,该版本已解决更早版本中已发现的大部分bug

javacv系列文章使用6个jar包:

javacv.jar,javacpp.jar,ffmpeg.jar,ffmpeg-系统平台.jar,opencv.jar,opencv-系统平台.jar。

其中ffmpeg-系统平台.jar,opencv-系统平台.jar中的系统平台根据开发环境或者测试部署环境自行更改为对应的jar包,比如windows7 64位系统替换为ffmpeg-x86-x64.jar

为什么要这样做:因为ffmpeg-系统平台.jar中存放的是c/c++本地so/dll库,而ffmpeg.jar就是使用javacpp封装的对应本地库java接口的实现,而javacpp就是基于jni的一个功能性封装包,方便实现jni,javacv.jar就是对9个视觉库进行了二次封装,但是实现的功能有限,所以建议新手先熟悉openCV和ffmpeg这两个C/C++库的API后再来看javaCV思路就会很清晰了。

须知:

javacv系列文章默认音视频处理使用ffmpeg,图像处理使用opencv,摄像头抓取使用opencv

javacv官方github维护地址:https://github.com/bytedeco/javacv

依赖配置说明

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

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

1.使用maven添加依赖

<dependency>
	<groupId>org.bytedeco</groupId>
	<artifactId>javacv-platform</artifactId>
	<version>1.4.4</version>
</dependency>

2.使用gradle添加依赖

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

3.使用本地jar包方式

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

建议使用maven或gradle方式构建项目。

jar包使用须知:

1、windows x64平台用到的opencv依赖:opencv.jar;oepncv-windows-x86_64.jar(其他平台替换为对应的jar包即可)

2、苹果mac需要opencv-macosx-x86_64.jar
3、linux平台需要:opencv-linux-x86_64.jar  

4、安卓平台arm架构的需要opencv-android-arm.jar ,基于x86的需要opencv-android-x86.jar

为什么不需要安装opencv?

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

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

获取摄像头视频

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

预览本机摄像头视频图像的简单实现(由于之前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.EXIT_ON_CLOSE);
 
    //窗口是否关闭
    while(canvas.isDisplayable()){
      /*获取摄像头图像并在窗口中显示,这里Frame frame=grabber.grab()得到是解码后的视频图像*/
      canvas.showImage(grabber.grab());
    }
    grabber.close();//停止抓取
  }
}

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

以上就是javacv开发详解之调用本机摄像头视频的详细内容,更多关于javacv调用本机摄像头的资料请关注脚本之家其它相关文章!

相关文章

  • MyBatis-Plus拦截器实现数据权限控制的示例

    MyBatis-Plus拦截器实现数据权限控制的示例

    本文主要介绍了MyBatis-Plus拦截器实现数据权限控制的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • Java如何使用Set接口存储没有重复元素的数组

    Java如何使用Set接口存储没有重复元素的数组

    Set是一个继承于Collection的接口,即Set也是集合中的一种。Set是没有重复元素的集合,本篇我们就用它存储一个没有重复元素的数组
    2022-04-04
  • JDK与JRE的下载和安装以及配置JDK环境变量图文教程

    JDK与JRE的下载和安装以及配置JDK环境变量图文教程

    JRE也就是(Java RuntimeEnvironment)Java运行环境,是运行JAVA程序所必须的环境的集合,包含各种类库,下面这篇文章主要给大家介绍了关于JDK与JRE的下载和安装以及配置JDK环境变量的相关资料,需要的朋友可以参考下
    2023-12-12
  • 基于Java SSM实现Excel数据批量导入

    基于Java SSM实现Excel数据批量导入

    这篇文章主要为大家详细介绍了基于Java SSM如何实现excel数据批量导入,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • Java实现数据库连接池的方法

    Java实现数据库连接池的方法

    这篇文章主要介绍了Java实现数据库连接池的方法,涉及java数据库连接池的创建、连接、刷新、关闭及状态获取的常用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • Jmeter固定定时器的使用详解

    Jmeter固定定时器的使用详解

    jmeter提供了多种定时器以便于我们进行接口的测试,你知道jmeter提供的定时器有哪些吗,本文就详细的介绍了Jmeter固定定时器的使用,感兴趣的可以了解一下
    2021-11-11
  • springboot+RabbitMQ+InfluxDB+Grafara监控实践

    springboot+RabbitMQ+InfluxDB+Grafara监控实践

    这篇文章主要介绍了springboot+RabbitMQ+InfluxDB+Grafara监控实践,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • 使用FeignClient调用POST表单Body内没有参数问题

    使用FeignClient调用POST表单Body内没有参数问题

    这篇文章主要介绍了使用FeignClient调用POST表单Body内没有参数问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • 如何用Intellij idea2020打包jar的方法步骤

    如何用Intellij idea2020打包jar的方法步骤

    这篇文章主要介绍了如何用Intellij idea 2020打包jar的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • java判断对象中某个属性是否为空方法代码

    java判断对象中某个属性是否为空方法代码

    这篇文章主要给大家介绍了关于java判断对象中某个属性是否为空的相关资料,最近遇到后台接收值的时候,需要对接收对象进行非空校验,需要的朋友可以参考下
    2023-07-07

最新评论