类 VideoWriter
- java.lang.Object
-
- org.opencv.videoio.VideoWriter
-
public class VideoWriter extends java.lang.Object视频写入类。此类提供 C++ API 用于写入视频文件或图像序列。
-
-
字段摘要
字段 修饰符和类型 字段 描述 protected longnativeObj
-
构造函数摘要
构造函数 修饰符 构造函数 描述 VideoWriter()默认构造函数。 构造函数/函数初始化视频写入器。保护VideoWriter(long addr)VideoWriter(java.lang.String filename, int fourcc, double fps, Size frameSize)VideoWriter(java.lang.String filename, int fourcc, double fps, Size frameSize, boolean isColor)VideoWriter(java.lang.String filename, int fourcc, double fps, Size frameSize, MatOfInt params)params参数允许指定额外的编码器参数,编码为对(paramId_1, paramValue_1, paramId_2, paramValue_2, ...VideoWriter(java.lang.String filename, int apiPreference, int fourcc, double fps, Size frameSize)apiPreference参数允许指定要使用的 API 后端。VideoWriter(java.lang.String filename, int apiPreference, int fourcc, double fps, Size frameSize, boolean isColor)apiPreference参数允许指定要使用的 API 后端。VideoWriter(java.lang.String filename, int apiPreference, int fourcc, double fps, Size frameSize, MatOfInt params)
-
方法摘要
所有方法 静态方法 实例方法 具体方法 修饰符和类型 方法 描述 静态 VideoWriter__fromPtr__(long addr)protected voidfinalize()static intfourcc(char c1, char c2, char c3, char c4)将 4 个字符连接到 fourcc 代码doubleget(int propId)返回指定的 VideoWriter 属性java.lang.StringgetBackendName()返回使用的后端 API 名称注意:流应已打开。longgetNativeObjAddr()booleanisOpened()如果视频写入器已成功初始化,则返回 true。booleanopen(java.lang.String filename, int fourcc, double fps, Size frameSize)初始化或重新初始化视频写入器。booleanopen(java.lang.String filename, int fourcc, double fps, Size frameSize, boolean isColor)初始化或重新初始化视频写入器。booleanopen(java.lang.String filename, int fourcc, double fps, Size frameSize, MatOfInt params)booleanopen(java.lang.String filename, int apiPreference, int fourcc, double fps, Size frameSize)booleanopen(java.lang.String filename, int apiPreference, int fourcc, double fps, Size frameSize, boolean isColor)booleanopen(java.lang.String filename, int apiPreference, int fourcc, double fps, Size frameSize, MatOfInt params)voidrelease()关闭视频写入器。booleanset(int propId, double value)在 VideoWriter 中设置属性。voidwrite(Mat image)写入下一个视频帧
-
-
-
构造函数详细信息
-
VideoWriter
protected VideoWriter(long addr)
-
VideoWriter
public VideoWriter()
默认构造函数。 构造函数/函数初始化视频写入器。- 在 Linux 上,FFMPEG 用于写入视频;
- 在 Windows 上,使用 FFMPEG 或 MSWF 或 DSHOW;
- 在 MacOSX 上,使用 AVFoundation。
-
VideoWriter
public VideoWriter(java.lang.String filename, int fourcc, double fps, Size frameSize, boolean isColor)- 参数
filename- 输出视频文件的名称。fourcc- 用于压缩帧的编解码器的 4 字符代码。 例如,VideoWriter::fourcc('P','I','M','1') 是 MPEG-1 编解码器,VideoWriter::fourcc('M','J','P','G') 是 motion-jpeg 编解码器等。代码列表可以在 [MSDN](https://docs.microsoft.com/en-us/windows/win32/medfound/video-fourccs) 页面或此 [页面](https://fourcc.org/codecs.php) 的 fourcc 网站上获取,以获取更完整的列表)。带有 MP4 容器的 FFMPEG 后端本机使用其他值作为 fourcc 代码:参见 [ObjectType](http://mp4ra.org/#/codecs),因此您可能会收到来自 OpenCV 的关于 fourcc 代码转换的警告消息。fps- 创建的视频流的帧速率。frameSize- 视频帧的大小。isColor- 如果不为零,则编码器将期望并编码彩色帧,否则它将处理灰度帧。提示- 对于某些后端,
fourcc=-1会弹出系统中的编解码器选择对话框。 - 要保存图像序列,请使用正确的文件名(例如
img_%02d.jpg)和fourcc=0ORfps=0。 使用未压缩的图像格式(例如img_%02d.BMP)来保存原始帧。 - 大多数编解码器是有损的。 如果您想要无损视频文件,则需要使用无损编解码器(例如,FFMPEG FFV1、Huffman HFYU、Lagarith LAGS 等...)
- 如果启用了 FFMPEG,使用
codec=0; fps=0;您可以创建一个未压缩(原始)的视频文件。 - 如果使用 FFMPEG,我们允许奇数宽度或高度的帧,但在这种情况下,我们会截断最右边的列/底行。 可能应该更优雅地处理这个问题,但 FFMPEG swscale 中的一些内部函数需要偶数宽度/高度。
- 对于某些后端,
-
VideoWriter
public VideoWriter(java.lang.String filename, int fourcc, double fps, Size frameSize)- 参数
filename- 输出视频文件的名称。fourcc- 用于压缩帧的编解码器的 4 字符代码。 例如,VideoWriter::fourcc('P','I','M','1') 是 MPEG-1 编解码器,VideoWriter::fourcc('M','J','P','G') 是 motion-jpeg 编解码器等。代码列表可以在 [MSDN](https://docs.microsoft.com/en-us/windows/win32/medfound/video-fourccs) 页面或此 [页面](https://fourcc.org/codecs.php) 的 fourcc 网站上获取,以获取更完整的列表)。带有 MP4 容器的 FFMPEG 后端本机使用其他值作为 fourcc 代码:参见 [ObjectType](http://mp4ra.org/#/codecs),因此您可能会收到来自 OpenCV 的关于 fourcc 代码转换的警告消息。fps- 创建的视频流的帧速率。frameSize- 视频帧的大小。将处理灰度帧。提示- 对于某些后端,
fourcc=-1会弹出系统中的编解码器选择对话框。 - 要保存图像序列,请使用正确的文件名(例如
img_%02d.jpg)和fourcc=0ORfps=0。 使用未压缩的图像格式(例如img_%02d.BMP)来保存原始帧。 - 大多数编解码器是有损的。 如果您想要无损视频文件,则需要使用无损编解码器(例如,FFMPEG FFV1、Huffman HFYU、Lagarith LAGS 等...)
- 如果启用了 FFMPEG,使用
codec=0; fps=0;您可以创建一个未压缩(原始)的视频文件。 - 如果使用 FFMPEG,我们允许奇数宽度或高度的帧,但在这种情况下,我们会截断最右边的列/底行。 可能应该更优雅地处理这个问题,但 FFMPEG swscale 中的一些内部函数需要偶数宽度/高度。
- 对于某些后端,
-
VideoWriter
public VideoWriter(java.lang.String filename, int apiPreference, int fourcc, double fps, Size frameSize, boolean isColor)apiPreference参数允许指定要使用的 API 后端。 如果有多个实现可用,则可用于强制执行特定的读取器实现:例如 cv::CAP_FFMPEG 或 cv::CAP_GSTREAMER。- 参数
filename- 自动生成apiPreference- 自动生成fourcc- 自动生成fps- 自动生成frameSize- 自动生成isColor- 自动生成
-
VideoWriter
public VideoWriter(java.lang.String filename, int apiPreference, int fourcc, double fps, Size frameSize)apiPreference参数允许指定要使用的 API 后端。 如果有多个实现可用,则可用于强制执行特定的读取器实现:例如 cv::CAP_FFMPEG 或 cv::CAP_GSTREAMER。- 参数
filename- 自动生成apiPreference- 自动生成fourcc- 自动生成fps- 自动生成frameSize- 自动生成
-
VideoWriter
public VideoWriter(java.lang.String filename, int fourcc, double fps, Size frameSize, MatOfInt params)params参数允许指定额外的编码器参数,编码为对(paramId_1, paramValue_1, paramId_2, paramValue_2, ... .)参见 cv::VideoWriterProperties- 参数
filename- 自动生成fourcc- 自动生成fps- 自动生成frameSize- 自动生成params- 自动生成
-
-
方法详细信息
-
getNativeObjAddr
public long getNativeObjAddr()
-
__fromPtr__
public static VideoWriter __fromPtr__(long addr)
-
打开
public boolean open(java.lang.String filename, int fourcc, double fps, Size frameSize, boolean isColor)初始化或重新初始化视频写入器。 该方法打开视频写入器。 参数与构造函数 VideoWriter::VideoWriter 中的相同。- 参数
filename- 自动生成fourcc- 自动生成fps- 自动生成frameSize- 自动生成isColor- 自动生成- 返回
- 如果视频写入器已成功初始化,则为
true。 该方法首先调用 VideoWriter::release 以关闭已打开的文件。
-
打开
public boolean open(java.lang.String filename, int fourcc, double fps, Size frameSize)初始化或重新初始化视频写入器。 该方法打开视频写入器。 参数与构造函数 VideoWriter::VideoWriter 中的相同。- 参数
filename- 自动生成fourcc- 自动生成fps- 自动生成frameSize- 自动生成- 返回
- 如果视频写入器已成功初始化,则为
true。 该方法首先调用 VideoWriter::release 以关闭已打开的文件。
-
打开
public boolean open(java.lang.String filename, int apiPreference, int fourcc, double fps, Size frameSize, boolean isColor)
-
打开
public boolean open(java.lang.String filename, int apiPreference, int fourcc, double fps, Size frameSize)
-
打开
public boolean open(java.lang.String filename, int fourcc, double fps, Size frameSize, MatOfInt params)
-
打开
public boolean open(java.lang.String filename, int apiPreference, int fourcc, double fps, Size frameSize, MatOfInt params)
-
isOpened
public boolean isOpened()
如果视频写入器已成功初始化,则返回 true。- 返回
- 自动生成
-
release
public void release()
关闭视频写入器。 该方法由后续的 VideoWriter::open 和 VideoWriter 析构函数自动调用。
-
写
public void write(Mat image)
写入下一个视频帧- 参数
image- 写入的帧。 通常,彩色图像以 BGR 格式显示。 函数/方法将指定的图像写入视频文件。 它必须与打开视频写入器时指定的大小相同。
-
set
public boolean set(int propId, double value)在 VideoWriter 中设置属性。- 参数
propId- 来自 cv::VideoWriterProperties 的属性标识符(例如 cv::VIDEOWRITER_PROP_QUALITY)或 REF: videoio_flags_others 之一value- 属性的值。- 返回
- 如果属性受 VideoWriter 实例使用的后端支持,则为
true。
-
get
public double get(int propId)
返回指定的 VideoWriter 属性- 参数
propId- 来自 cv::VideoWriterProperties 的属性标识符(例如 cv::VIDEOWRITER_PROP_QUALITY)或 REF: videoio_flags_others 之一- 返回
- 指定属性的值。 查询 VideoWriter 实例使用的后端不支持的属性时,返回值为 0。
-
fourcc
public static int fourcc(char c1, char c2, char c3, char c4)将 4 个字符连接到 fourcc 代码- 参数
c1- 自动生成c2- 自动生成c3- 自动生成c4- 自动生成- 返回
- fourcc 代码。 此静态方法构造要在构造函数 VideoWriter::VideoWriter 或 VideoWriter::open 中使用的编解码器的 fourcc 代码。
-
getBackendName
public java.lang.String getBackendName()
返回使用的后端 API 名称注意:流应已打开。- 返回
- 自动生成
-
finalize
protected void finalize() throws java.lang.Throwable- 重写
finalize在类java.lang.Object中- 抛出
java.lang.Throwable
-
-