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

重要:

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

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

javacv.jar,javacpp.jar,ffmpeg.jar,ffmpeg-系统平台.jarOpenCV.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

javaCV1.3版本下载:

1、javacv1.3核心包:(包含javacv.jar,javacpp.jar和javacv-platform.jar)

2、javacv1.3-opencv包集合:

3、javacv1.3-ffmpeg包集合:

javaCV1.3所有jar包集合:

javaCV1.2所有jar包集合在这里下载:

1、使用最新的javacv1.3

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

以下部分为javacv1.2版本,不再建议下载

基础依赖包:javacv.jar;javacpp.jar(必须是1.2以上版本)

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

补充:

1、如果是苹果mac系统,把oepncv-windows-x86_64.jar替换成这个包opencv-macosx-x86_64.jar2、Linux平台替换成这个包:opencv-linux-x86_64.jar  

3、安卓平台替换成opencv-android-arm.jar  或者opencv-android-x86.jar 

2、为什么不需要安装opencv?

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

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

3、java通过javacv获取windows的摄像头视频

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

java获取摄像头的视频编码 java 摄像头视频处理_jar

代码只有那么多:

1. /**
2.  * 文件名:javavcCameraTest.java
3.  * 描述:调用windows平台的摄像头窗口视频
4.  * 修改时间:2016年6月13日
5.  * 修改内容:
6.  */  
7. package cc.eguid.javacv;  
8.   
9. import javax.swing.JFrame;  
10.   
11. import org.bytedeco.javacv.CanvasFrame;  
12. import org.bytedeco.javacv.OpenCVFrameConverter;  
13. import org.bytedeco.javacv.FrameGrabber.Exception;  
14. import org.bytedeco.javacv.OpenCVFrameGrabber;  
15.   
16. /**
17.  * 调用本地摄像头窗口视频
18.  * @author eguid  
19.  * @version 2016年6月13日  
20.  * @see javavcCameraTest  
21.  * @since  javacv1.2
22.  */  
23.   
24. public class JavavcCameraTest  
25. {  
26. public static void main(String[] args) throws Exception, InterruptedException  
27. {  
28. new OpenCVFrameGrabber(0);    
29. //开始获取摄像头数据  
30. new CanvasFrame("摄像头");//新建一个窗口  
31.     canvas.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
32. true);  
33.       
34. while(true)  
35.     {  
36. if(!canvas.isDisplayable())  
37. //窗口是否关闭  
38. //停止抓取  
39. 2);//退出  
40.         }  
41. //获取摄像头图像并放到窗口上显示, 这里的Frame frame=grabber.grab(); frame是一帧视频图像  
42.   
43. 50);//50毫秒刷新一次图像  
44.     }  
45. }  
46. }

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

而使用c/c++要几百行才能实现同样的功能(夸张了点 - -)

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

重要:

建议使用最新javaCV1.3版本,该版本已解决更早版本中已发现的大部分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

javaCV1.3版本下载:

1、javacv1.3核心包:(包含javacv.jar,javacpp.jar和javacv-platform.jar)

2、javacv1.3-opencv包集合:

3、javacv1.3-ffmpeg包集合:

javaCV1.3所有jar包集合:

javaCV1.2所有jar包集合在这里下载:

1、使用最新的javacv1.3

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

以下部分为javacv1.2版本,不再建议下载

基础依赖包:javacv.jar;javacpp.jar(必须是1.2以上版本)

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

补充:

1、如果是苹果mac系统,把oepncv-windows-x86_64.jar替换成这个包opencv-macosx-x86_64.jar

2、Linux平台替换成这个包:opencv-linux-x86_64.jar  

3、安卓平台替换成opencv-android-arm.jar  或者opencv-android-x86.jar 

2、为什么不需要安装opencv?

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

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

3、java通过javacv获取windows的摄像头视频

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

java获取摄像头的视频编码 java 摄像头视频处理_jar

代码只有那么多:

1. /**
2.  * 文件名:javavcCameraTest.java
3.  * 描述:调用windows平台的摄像头窗口视频
4.  * 修改时间:2016年6月13日
5.  * 修改内容:
6.  */  
7. package cc.eguid.javacv;  
8.   
9. import javax.swing.JFrame;  
10.   
11. import org.bytedeco.javacv.CanvasFrame;  
12. import org.bytedeco.javacv.OpenCVFrameConverter;  
13. import org.bytedeco.javacv.FrameGrabber.Exception;  
14. import org.bytedeco.javacv.OpenCVFrameGrabber;  
15.   
16. /**
17.  * 调用本地摄像头窗口视频
18.  * @author eguid  
19.  * @version 2016年6月13日  
20.  * @see javavcCameraTest  
21.  * @since  javacv1.2
22.  */  
23.   
24. public class JavavcCameraTest  
25. {  
26. public static void main(String[] args) throws Exception, InterruptedException  
27. {  
28. new OpenCVFrameGrabber(0);    
29. //开始获取摄像头数据  
30. new CanvasFrame("摄像头");//新建一个窗口  
31.     canvas.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
32. true);  
33.       
34. while(true)  
35.     {  
36. if(!canvas.isDisplayable())  
37. //窗口是否关闭  
38. //停止抓取  
39. 2);//退出  
40.         }  
41. //获取摄像头图像并放到窗口上显示, 这里的Frame frame=grabber.grab(); frame是一帧视频图像  
42.   
43. 50);//50毫秒刷新一次图像  
44.     }  
45. }  
46. }

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

而使用c/c++要几百行才能实现同样的功能(夸张了点 - -)