- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
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
2
3
4
5
|
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv-platform</artifactId>
<version>
1.4
.
4
</version>
</dependency>
|
1
2
3
|
dependencies {
compile group:
'org.bytedeco'
, name:
'javacv-platform'
, version:
'1.4.4'
}
|
最新版实在太大,需要下载全量包的请到官方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 。
从javacv0.8开始,已经不需要本地安装opencv,直接通过引用opencv对应的系统平台的引用包即可.
(比如oepncv-windows-x86_64.jar就是典型的64位windows环境依赖包) 。
最终调用的摄像头实时视频图像界面:
预览本机摄像头视频图像的简单实现(由于之前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的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
全称“Java Virtual Machine statistics monitoring tool”(statistics 统计;monitoring 监控;tool 工具) 用于监控虚拟机的各种运
主要是讲下Mongodb的索引的查看、创建、删除、类型说明,还有就是Explain执行计划的解释说明。 可以转载,但请注明出处。  
1>单线程或者单进程 相当于短链接,当accept之后,就开始数据的接收和数据的发送,不接受新的连接,即一个server,一个client 不存在并发。 2>循环服务器和并发服务器
详解 linux中的关机和重启命令 一 shutdown命令 shutdown [选项] 时间 选项: ?
首先,将json串转为一个JObject对象: ? 1
matplotlib官网 matplotlib库默认英文字体 添加黑体(‘SimHei')为绘图字体 代码: plt.rcParams['font.sans-serif']=['SimHei'
在并发编程中,synchronized关键字是常出现的角色。之前我们都称呼synchronized关键字为重量锁,但是在jdk1.6中对synchronized进行了优化,引入了偏向锁、轻量锁。本篇
一般我们的项目中会使用1到2个数据库连接配置,同程艺龙的数据库连接配置被收拢到统一的配置中心,由DBA统一配置和维护,业务方通过某个字符串配置拿到的是Connection对象。  
实例如下: ? 1
1. MemoryCahe NetCore中的缓存和System.Runtime.Caching很相似,但是在功能上做了增强,缓存的key支持object类型;提供了泛型支持;可以读缓存和单个缓存
argument是javascript中函数的一个特殊参数,例如下文,利用argument访问函数参数,判断函数是否执行 复制代码 代码如下: <script
一不小心装了一个Redis服务,开了一个全网的默认端口,一开始以为这台服务器没有公网ip,结果发现之后悔之莫及啊 某天发现cpu load高的出奇,发现一个minerd进程 占了大量cpu,googl
今天写这个是为了 提醒自己 编程过程 不仅要有逻辑 思想 还有要规范 代码 这样可读性 1、PHP 编程规范与编码习惯最主要的有以下几点: 1 文件说明 2 funct
摘要:虚拟机安装时一般都采用最小化安装,默认没有lspci工具。一台测试虚拟网卡性能的虚拟机,需要lspci工具来查看网卡的类型。本文描述了在一个虚拟机中安装lspci工具的具体步骤。 由于要测试
1、修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统
目录 算术运算符 基本四则运算符 增量赋值运算符 自增/自减运算符 关系运算符 逻
如下所示: ? 1
MapperScannerConfigurer之sqlSessionFactory注入方式讲解 首先,Mybatis中的有一段配置非常方便,省去我们去写DaoImpl(Dao层实现类)的时间,这个
Linux的网络虚拟化是LXC项目中的一个子项目,LXC包括文件系统虚拟化,进程空间虚拟化,用户虚拟化,网络虚拟化,等等,这里使用LXC的网络虚拟化来模拟多个网络环境。 本文从基本的网络设备讲
? 1
我是一名优秀的程序员,十分优秀!