java抓取网页数据(一下JavaCV如何使用JavaCV进行视频开发?的pom.xml)

优采云 发布时间: 2022-04-13 13:19

  java抓取网页数据(一下JavaCV如何使用JavaCV进行视频开发?的pom.xml)

  JavaCV 现在是一个热门的开源项目。今天先简单介绍一下JavaCV的技术,然后再简单介绍一下如何使用JavaCV进行视频开发。

  

  1、OpenCV介绍

  JavaCV的名字来源于著名的OpenCV开源软件库。CV是Computer Vision的缩写,中文意思是“计算机视觉”,OpenCV的整体意思是“开源计算机视觉和机器学习软件库”。

  OpenCV主要是用C语言开发的,包括少量的C++代码,其中收录大量的图形处理和计算机视觉功能。

  OpenCV不依赖其他库,使用起来特别方便。当然,OpenCV 也可以根据需要使用其他库。

  在嵌入式开发中,也可以使用 OpenCV。我们可以从 OpenCV 中提取我们需要的代码来使用。

  2、JavaCPP 简介

  JavaCV是基于JavaCPP技术实现的,所以JavaCPP是JavaCV的底层技术核心。

  JavaCPP提供了一种机制,允许Java程序通过注解以JNI的形式调用C++代码中的函数。

  因为 JavaCPP 易于使用,所以它是 Java 程序员的福音。很多高性能软件都是通过C/C++实现的,Java程序都可以使用。

  令人惊讶的是,当我们在 github 上搜索 JavaCV 时,发现它和 JavaCPP 都是由 bytedeco 开发的:

  

  原来bytedeco为了实现JavaCV专门开发了JavaCPP。如此惊人!

  3、JavaCV介绍

  以JavaCPP为基础,JavaCV的实现相对简单。

  这是在 Intellj IDEA 中打开 JavaCV 时的源代码结构:

  

  从类的数量来看,我们发现JavaCV一共只有68个类,太简单了!

  而当我们随意打开一个类的实现代码时,会发现该类的代码同样简单。比如这是FFmpegFrameRecorder的源码,这么强大的类,总共只有1300行代码,代码逻辑并不复杂:

  

  现在,让我们再看一下JavaCV的依赖关系。JavaCV的pom.xml文件内容如下:

  

  如您所见,JavaCV 使用了 JavaCPP、OpenCV 和 FFmpeg 的依赖项。

  4、使用JavaCV开发视频程序

  现在JavaCV用得最多的地方是机器学习,如果我们用JavaCV在github上搜索代码,可以得出这样的结论。但这里只是简单介绍一下JavaCV在视频开发中的应用。

  JavaCV封装了视频的概念,视频系统分为两部分:

  比如我们需要从一个RTSP地址读取视频流,又想使用FFmpeg提供的功能,我们可以使用FFmpegFrameGrabber来实现。以下是启动 Grabber 的代码:

  FFmpegFrameGrabber fFmpegFrameGrabber = new FFmpegFrameGrabber(rtspAddress);

fFmpegFrameGrabber.setFormat("rtsp");

fFmpegFrameGrabber.setOption("rtsp_transport", "tcp");

fFmpegFrameGrabber.start();

  同样,我们将视频发送到某个目的地址,想使用FFmpeg提供的功能,可以使用FFmpegFrameRecorder来实现。

  FFmpegFrameGrabber的grab()方法用于实现抓取视频的功能;FFmpegFrameRecorder的record()方法用于实现录制视频的功能。

  在处理过程中,我们可以获得两类视频数据:

  5、JavaCV的优缺点

  使用JavaCV的优点是上手快,开发速度非常快。即使是没有太多视频知识的程序员也可以开发出稳定高效的视频处理程序。

  但是JavaCV的这个优点也导致了它的缺点,因为JavaCV过于简单易用,一旦我们的程序运行就会导致错误或者异常,我们无法通过Java程序本身发现错误,必须找到JavaCV依赖的C/C++语言的OpenCV和FFmpeg库定位错误,这对Java程序员来说绝对是一种折磨。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线