java 视频转码工具类_JavaCV入门指南:FrameConverter转换工具类及CanvasFrame图像预览工具类(javaCV教程完结篇)...
JavaCV入门指南:FrameConverter转换工具类及CanvasFrame图像预览工具类(javaCV教程完结篇)
前言
再此章之前,我们已经详细介绍和剖析了javacv的结构和ffmpeg和opencv的封装调用方式,以及javacv中重要的FrameGrabber和FrameRecorder的原理和用法,本章是javacv入门指南的最后一章,主要介绍转换工具和图像预览工具类。
FrameConverter介绍
FrameConverter封装了常用的转换操作,比如opencv与Frame的互转、java图像与Frame的互转以及安卓平台的Bitmap图像与Frame互转操作。
FrameConverter的子类
AndroidFrameConverter
Java2DFrameConverter
JavaFXFrameConverter
LeptonicaFrameConverter
OpenCVFrameConverter
由于JavaCV的Frame完全是仿照ffmpeg的AVFrame格式设计的,所有AVFrame和Frame不存在互转,它们的数据格式基本是互通的,直接赋值即可。
AndroidFrameConverter互转操作
专门用于安卓平台的转换操作,用于将Bitmap和Frame进行互转,以及提供了额外的yuv转bgr操作。
//Frame转换为Bitmap
Bitmap convert(Frame frame)
//bitmap转换为frame
Frame convert(Bitmap bitmap)
//yuv4:2:0像素转换为BGR像素
/**
* Convert YUV 4:2:0 SP (NV21) data to BGR, as received, for example,
* via {@link Camera.PreviewCallback#onPreviewFrame(byte[],Camera)}.
*/
public Frame convert(byte[] data, int width, int height)
Java2DFrameConverter互转操作
提供了Frame和java图像BufferedImage的互转操作。
//Frame转BufferedImage图像
public BufferedImage getBufferedImage(Frame frame)
// 伽马值,用来调节图像的灰度曲线,与显示设备有关
BufferedImage getBufferedImage(Frame frame, double gamma)
BufferedImage getBufferedImage(Frame frame, double gamma, boolean flipChannels, ColorSpace cs)
// BufferedImage图像转Frame
Frame getFrame(BufferedImage image)
Frame getFrame(BufferedImage image, double gamma)
Frame getFrame(BufferedImage image, double gamma, boolean flipChannels)
JavaFXFrameConverter互转操作
提供了JavaFX的图像Image和Frame的转换操作。
//把javaFX的图像Image转换为javacv的Frame
Frame convert(Image f)
//把Frame转换为javaFX的Image图像对象
Image convert(Frame frame)
LeptonicaFrameConverter互转操作
用于Leptonica和tesserac的PIX和Frame的互转,Leptonica是图像识别库google tesserac ocr的依赖库,也即是说该工具类一般是用于tesserac的图像PIX对象与Frame互转操作。
//Frame转tesserac的PIX图像
PIX convert(Frame frame)
//tesserac的PIX图像转Frame
Frame convert(PIX pix)
OpenCVFrameConverter互转操作
主要用于opencv的IplImage/Mat和Frame的互转操作。
IplImage与Frame互转
//把frame转换成IplImage
IplImage convertToIplImage(Frame frame)
//把IplImage转换成frame
Frame convert(IplImage img)
Mat与Frame互转
//frame转换成Mat
Mat convertToMat(Frame frame)
//mat转换成frame
Frame convert(Mat mat)
CanvasFrame介绍
CanvasFrame是用于预览Frame图像的工具类,但是这个工具类的gama值通常是有问题的,所以显示的图像可能会偏色,但是不影响最终图像的色彩。
CanvasFrame的原理
CanvasFrame内部是使用的swing的Canvas画板操作,使用canvas画板绘制图像。
CanvasFrame的使用
CanvasFrame canvas = new CanvasFrame("转换apng中屏幕预览");// 新建一个窗口
canvas.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
canvas.setAlwaysOnTop(true);
//显示画面,这个操作用来显示Frame,一般Frame从各个FrameGrabber中获取或者从各个converter转换类中而来。
canvas.showImage(frame);
本章至此结束。
结语
从18年9月写javacv入门指南以来,经历了一年多的时间,虽然19年因为各种稀奇古怪(请自行脑补博主辗转反侧纠结的情景)的原因断更了一段时间,终于熬到了到本章结束,javacv入门指南系列至此正式完结
java 视频转码工具类_JavaCV入门指南:FrameConverter转换工具类及CanvasFrame图像预览工具类(javaCV教程完结篇)...相关推荐
- 你会写java视频转码的工具吗?
是的,我会写Java视频转码的工具.视频转码是一种将视频从一种格式转换为另一种格式的过程.通常,这是为了使视频能够在不同的设备上播放,或者为了减小视频文件的大小.Java是一种流行的编程语言,可以用来 ...
- android 生成 资源文件,SVG-Android开源库——SVG生成Vector资源文件的编辑预览工具...
Vector矢量图在Android项目中的利用愈来愈广泛,但是如果你想用Android Studio自带的工具将SVG图片转化成Vector资源文件却是相当麻烦,首先能支持的SVG规范较少,其次操作流 ...
- 厉害了,手把手教你搭建一个代码在线编辑预览工具
点击下方"前端开发博客",选择"设为星标" 回复"2"加入前端群 简介 大家好,我是一个闲着没事热衷于重复造轮子的不知名前端,今天给大家带来 ...
- 手把手教你快速搭建一个代码在线编辑预览工具
简介 大家好,今天我跟大家分享的是一个代码在线编辑预览工具的实现教程,手把手教你完成这样一个项目. 目前这类工具使用很广泛,常见于各种文档网站及代码分享场景,相关工具也比较多,如codepen.jsr ...
- quicklook不能预览office_万物皆可格!给空格键施加神奇魔法的神器软件—快速预览工具QuicklookPC软件...
大家好,我是元力.今天给大家带来一款电脑端使用的超级神奇的软件.只需要选中文件,然后点击空格键,即可预览文件. 支持大部分格式,比如word.excel.pdf.图片.视频甚至图片的源文件等等.真正实 ...
- 一个十分好用的桌面快速预览工具--QuickLook
QuickLook是一款文件快速预览工具,使用该软件可以快速预览文件,支持的格式包括图片.视频.pdf.压缩包.软件包等. 1.下载安装(https://www.softpedia.com/get/D ...
- Pico VR 实时预览工具 Preview Tool,终于发布
Pico 官方在 2022 年 4 月 2 号发布 XR 实时预览工具:Preview Tool v1.0 更新内容: 发布预览工具.具体介绍如下: 通过 Pico Unity/Unreal XR P ...
- 表格图片预览_Mac预览工具使用技巧,Mac预览功能实用技巧大全
Mac预览怎么用?有很多的用户以为Mac自带的预览功能只具有简单的图片浏览功能,其实不然,其实"预览"是一款强大的看图.修图.改图软件,也同时是一款多功能的 PDF 阅读与编辑工具 ...
- Chrome 扩展程序——Imagus:图片放大预览工具
主要介绍 Imagus 的功能及应用,Imagus 是一款简单实用的图片放大预览工具. 主要功能 Imagus 的功能非常单一,就是在浏览网页时,当鼠标悬停到一张图片后,会自动放大图片,进行预览,这在 ...
最新文章
- C++网络包截取开发
- 五个在线图形工具创建简单的设计元素
- 上周热点回顾(9.1-9.7)
- 在线求CR,你觉得我这段Java代码还有优化的空间吗?
- selenium java项目_1)selenium+ java集成,待深度项目流程应用
- 微赞dataconfig.php,PHP标准化之路(一):使用 EditorConfig 实现语法统一
- Linux操作Oracle(10)——plsql配置Oracle客户端方法【Oracle客户端安装、资源下载】详细教程
- List小心性能损失的方法
- Oracle内存结构详解(四)--Oracle SGA其他组成部分
- Labview视觉模块安装
- 计算机盘符为什么没有AB盘
- Ftp站点访问及FileZilla客户端使用
- C. Inna and Dima
- 调试lan8720a遇到的奇葩问题,自动协商永远10M。
- 电商名词sku和spu的区别
- Jina文章转载:多模态AI的范式变革多模态AI总结(2022年COLING会议)
- 解读B站Q4财报:Q4营收同比增74%,B站破圈能继续俘获大众芳心?
- Arduino 开锁,刷卡开锁模块
- 机器学习与知识发现_在机器学习中重新“发现”量子力学
- Python兼职收益快赶上我本职工作了,一月收入7000+,记录一下