类 VideoWriter
- java.lang.Object
-
- org.opencv.videoio.VideoWriter
-
public class VideoWriter extends java.lang.Object
视频写入器类。此类提供用于写入视频文件或图像序列的 C++ API。
-
-
字段摘要
字段 修饰符和类型 字段 描述 protected long
nativeObj
-
构造函数摘要
构造函数 修饰符 构造函数 描述 VideoWriter()
默认构造函数 构造函数/函数初始化视频写入器。protected
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)
-
方法摘要
所有方法 静态方法 实例方法 具体方法 修饰符和类型 方法 描述 static VideoWriter
__fromPtr__(long addr)
protected void
finalize()
static int
fourcc(char c1, char c2, char c3, char c4)
将 4 个字符连接到 fourcc 代码double
get(int propId)
返回指定的 VideoWriter 属性java.lang.String
getBackendName()
返回使用的后端 API 名称 **注意:**应打开流。long
getNativeObjAddr()
boolean
isOpened()
如果视频写入器已成功初始化,则返回 true。boolean
open(java.lang.String filename, int fourcc, double fps, Size frameSize)
初始化或重新初始化视频写入器。boolean
open(java.lang.String filename, int fourcc, double fps, Size frameSize, boolean isColor)
初始化或重新初始化视频写入器。boolean
open(java.lang.String filename, int fourcc, double fps, Size frameSize, MatOfInt params)
boolean
open(java.lang.String filename, int apiPreference, int fourcc, double fps, Size frameSize)
boolean
open(java.lang.String filename, int apiPreference, int fourcc, double fps, Size frameSize, boolean isColor)
boolean
open(java.lang.String filename, int apiPreference, int fourcc, double fps, Size frameSize, MatOfInt params)
void
release()
关闭视频写入器。boolean
set(int propId, double value)
设置 VideoWriter 中的属性。void
write(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) 页面或 [fourcc 网站](https://fourcc.org/codecs.php) 的此页面上获得代码列表(更完整的列表)。使用 MP4 容器的 FFMPEG 后端原生使用其他值作为 fourcc 代码:参见 [ObjectType](http://mp4ra.org/#/codecs),因此您可能会收到来自 OpenCV 关于 fourcc 代码转换的警告消息。fps
- 创建的视频流的帧率。frameSize
- 视频帧的大小。isColor
- 如果它不为零,则编码器将期望并编码彩色帧,否则它将使用灰度帧。 **提示**- 对于某些后端,
fourcc=-1
会弹出系统的编解码器选择对话框。 - 要保存图像序列,请使用正确的文件名(例如
img_%02d.jpg
)和fourcc=0
或fps=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) 页面或 [fourcc 网站](https://fourcc.org/codecs.php) 的此页面上获得代码列表(更完整的列表)。使用 MP4 容器的 FFMPEG 后端原生使用其他值作为 fourcc 代码:参见 [ObjectType](http://mp4ra.org/#/codecs),因此您可能会收到来自 OpenCV 关于 fourcc 代码转换的警告消息。fps
- 创建的视频流的帧率。- `frameSize` - 视频帧的大小。支持灰度帧。**提示**
- 对于某些后端,
fourcc=-1
会弹出系统的编解码器选择对话框。 - 要保存图像序列,请使用正确的文件名(例如
img_%02d.jpg
)和fourcc=0
或fps=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)
-
open
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关闭已打开的文件。
-
open
public boolean open(java.lang.String filename, int fourcc, double fps, Size frameSize)
初始化或重新初始化视频写入器。此方法打开视频写入器。参数与构造函数VideoWriter::VideoWriter中的参数相同。- 参数
- `filename` - 自动生成
- `fourcc` - 自动生成
- `fps` - 自动生成
- `frameSize` - 自动生成
- 返回
- 如果视频写入器已成功初始化,则返回`true`。此方法首先调用VideoWriter::release关闭已打开的文件。
-
open
public boolean open(java.lang.String filename, int apiPreference, int fourcc, double fps, Size frameSize, boolean isColor)
-
open
public boolean open(java.lang.String filename, int apiPreference, int fourcc, double fps, Size frameSize)
-
open
public boolean open(java.lang.String filename, int fourcc, double fps, Size frameSize, MatOfInt params)
-
open
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析构函数自动调用。
-
write
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
- 重写
- 类`java.lang.Object`中的`finalize`
- 抛出
java.lang.Throwable
-
-