JavaCV免费教程目录:
javacv实战专栏目录(2016年更新至今):
2022年最新JavaCV最新音视频教程目录:
javacv开发包是用于支持java多媒体开发的一套开发包,可以适用于本地多媒体(音视频)调用以及音视频,图片等文件后期操作(图片修改,音视频解码剪辑等等功能),这里只使用最简单的本地摄像头调用来演示一下javacv的基础功能
依赖配置问题可以参考博主另一篇文章:JavaCV更新到1.5.x版本后的依赖问题说明以及如何精简依赖包大小
如何精简javacv依赖,达到最小依赖包:JavaCV精简依赖包:如何只依赖本地平台所需的最小依赖包
(注意:从其他地方下载的依赖包请积极开心的替换为官方jar包和博主提供jar包;如果使用其他jar包版本而导致出错,不要急着找博主问为啥会报错,先把jar包替换了再试试看)
maven和gradle方式如果想要减小依赖包大小,则需要手动进行排除不需要的平台依赖即可
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv-platform</artifactId>
<version>1.4.4</version>
</dependency>
dependencies {
compile group: 'org.bytedeco', name: 'javacv-platform', version: '1.4.4'
}
最新版实在太大,需要下载全量包的请到官方github.com/bytedeco/javacv下载
从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.DISPOSE_ON_CLOSE);
//窗口是否关闭
while(canvas.isDisplayable()){
/*获取摄像头图像并在窗口中显示,这里Frame frame=grabber.grab()得到是解码后的视频图像*/
canvas.showImage(grabber.grab());
}
grabber.close();//停止抓取
}
}
是不是很简单,原本很复杂的流媒体操作,javaCV能够帮助我们快速实现。
下一章将会讲解如何把本地摄像头的视频录制成文件以及推送到流媒体服务器:
javaCV开发详解之2:推流器实现和摄像头录制视频功能(支持windows/linux/mac/Android/ios全平台)
如果觉得博主写得还不错,欢迎“关注、收藏、点赞”一键三连!
end
当前JavaCV免费教程目录:
其他JavaCV专栏推荐:
2022年最新JavaCV最新音视频教程目录:
JavaCV入门指南专栏
JavaCV入门指南:序章(看完本章后,不想看原理的小伙伴可直接跳转到《快速上手篇》)
JavaCV入门指南:调用FFmpeg原生API和JavaCV是如何封装了FFmpeg的音视频操作
JavaCV入门指南:调用opencv原生API和JavaCV是如何封装了opencv的图像处理操作
JavaCV入门指南:帧抓取器(FrameGrabber)的原理与应用
JavaCV入门指南:帧录制器/推流器(FrameRecorder)的原理与应用
JavaCV入门指南:帧过滤器(FrameFilter)的原理与应用
JavaCV入门指南:FrameConverter转换工具类及CanvasFrame图像预览工具类
《快速上手篇》(为了区别,单独划分):
javacv进阶tesserac文字识别系列:
javaCV文字识别之1:基于google的tesserac ocr识别图片中的文字,跨平台支持英文中文简体繁体等各种字符识别
javacv进阶ffmpeg系列:
javacpp-FFmpeg系列之1:视频拉流解码成YUVJ420P,并保存为jpg图片
javacpp-FFmpeg系列之2:通用拉流解码器,支持视频拉流解码并转换为YUV、BGR24或RGB24等图像像素数据
javacpp-FFmpeg系列之3: 图像数据转换(BGR与BufferdImage互转,RGB与BufferdImage互转)
javacpp-FFmpeg系列补充:FFmpeg解决avformat_find_stream_info检索时间过长问题
javacv进阶opencv系列:
javaCV图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体、位置、大小、粗度、翻转、平滑等操作
javaCV图像处理之2:实时视频添加图片水印,实现不同大小图片叠加,图像透明度控制
javacv图像处理3:使用opencv原生方法遍历摄像头设备及调用(方便多摄像头遍历及调用,相比javacv更快的摄像头读取速度和效率,方便读取后的图像处理)
javacv人脸检测识别: