gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 33 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章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添加依赖

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

2.使用gradle添加依赖

?
1
2
3
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环境依赖包) 。

获取摄像头视频

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

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

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

?
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
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调用本机摄像头的资料请关注我其它相关文章! 。

原文链接:https://blog.csdn.net/eguid_1/article/details/51659578 。

最后此篇关于javacv开发详解之调用本机摄像头视频的文章就讲到这里了,如果你想了解更多关于javacv开发详解之调用本机摄像头视频的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com