/// <summary> /// Creates video writer structure. /// </summary> /// <param name="fileName">Name of the output video file. </param> /// <param name="fourcc">4-character code of codec used to compress the frames. For example, "PIM1" is MPEG-1 codec, "MJPG" is motion-jpeg codec etc. /// Under Win32 it is possible to pass null in order to choose compression method and additional compression parameters from dialog. </param> /// <param name="fps">Frame rate of the created video stream. </param> /// <param name="frameSize">Size of video frames. </param> /// <param name="prms">The `params` parameter allows to specify extra encoder parameters encoded as pairs (paramId_1, paramValue_1, paramId_2, paramValue_2, ... .) /// see cv::VideoWriterProperties</param> /// <returns></returns> public VideoWriter(string fileName, FourCC fourcc, double fps, Size frameSize, int[] prms) { FileName = fileName ?? throw new ArgumentNullException(nameof(fileName)); Fps = fps; FrameSize = frameSize; NativeMethods.HandleException( NativeMethods.videoio_VideoWriter_new4(fileName, (int)fourcc, fps, frameSize, prms, prms.Length, out ptr)); if (ptr == IntPtr.Zero) { throw new OpenCvSharpException("Failed to create VideoWriter"); } }
/// <summary> /// ビデオライタを作成し、返す. /// </summary> /// <param name="fileName">出力するビデオファイルの名前</param> /// <param name="fourcc"> /// フレームを圧縮するためのコーデックを表す 4 文字.例えば,"PIM1" は,MPEG-1 コーデック, "MJPG" は,motion-jpeg コーデックである. /// Win32 環境下では,null を渡すとダイアログから圧縮方法と圧縮のパラメータを選択できるようになる. /// </param> /// <param name="fps">作成されたビデオストリームのフレームレート</param> /// <param name="frameSize">ビデオフレームのサイズ</param> /// <param name="isColor">trueの場合,エンコーダはカラーフレームとしてエンコードする. falseの場合,グレースケールフレームとして動作する(現在のところ,このフラグは Windows でのみ利用できる).</param> /// <returns>CvVideoWriter</returns> #else /// <summary> /// Creates video writer structure. /// </summary> /// <param name="fileName">Name of the output video file. </param> /// <param name="fourcc">4-character code of codec used to compress the frames. For example, "PIM1" is MPEG-1 codec, "MJPG" is motion-jpeg codec etc. /// Under Win32 it is possible to pass null in order to choose compression method and additional compression parameters from dialog. </param> /// <param name="fps">Frame rate of the created video stream. </param> /// <param name="frameSize">Size of video frames. </param> /// <param name="isColor">If it is true, the encoder will expect and encode color frames, otherwise it will work with grayscale frames (the flag is currently supported on Windows only). </param> /// <returns></returns> #endif public VideoWriter(string fileName, FourCC fourcc, double fps, Size frameSize, bool isColor = true) { FileName = fileName ?? throw new ArgumentNullException(); Fps = fps; FrameSize = frameSize; IsColor = isColor; NativeMethods.HandleException( NativeMethods.videoio_VideoWriter_new2(fileName, (int)fourcc, fps, frameSize, isColor ? 1 : 0, out ptr)); if (ptr == IntPtr.Zero) { throw new OpenCvSharpException("Failed to create VideoWriter"); } }
/// <summary> /// Creates video writer structure. /// </summary> /// <param name="fileName">Name of the output video file. </param> /// <param name="apiPreference">allows to specify API backends to use. Can be used to enforce a specific reader implementation /// if multiple are available: e.g. cv::CAP_FFMPEG or cv::CAP_GSTREAMER.</param> /// <param name="fourcc">4-character code of codec used to compress the frames. For example, "PIM1" is MPEG-1 codec, "MJPG" is motion-jpeg codec etc. /// Under Win32 it is possible to pass null in order to choose compression method and additional compression parameters from dialog. </param> /// <param name="fps">Frame rate of the created video stream. </param> /// <param name="frameSize">Size of video frames. </param> /// <param name="prms">Parameters of VideoWriter for hardware acceleration</param> /// <returns></returns> public VideoWriter(string fileName, VideoCaptureAPIs apiPreference, FourCC fourcc, double fps, Size frameSize, VideoWriterPara prms) { FileName = fileName ?? throw new ArgumentNullException(nameof(fileName)); Fps = fps; FrameSize = frameSize; var p = prms.Parameters; NativeMethods.HandleException( NativeMethods.videoio_VideoWriter_new5(fileName, (int)apiPreference, (int)fourcc, fps, frameSize, p, p.Length, out ptr)); if (ptr == IntPtr.Zero) { throw new OpenCvSharpException("Failed to create VideoWriter"); } }
/// <summary> /// ビデオライタを開く /// </summary> /// <param name="fileName">出力するビデオファイルの名前</param> /// <param name="apiPreference">allows to specify API backends to use. Can be used to enforce a specific reader implementation /// if multiple are available: e.g. cv::CAP_FFMPEG or cv::CAP_GSTREAMER.</param> /// <param name="fourcc"> /// フレームを圧縮するためのコーデックを表す 4 文字.例えば,"PIM1" は,MPEG-1 コーデック, "MJPG" は,motion-jpeg コーデックである. /// Win32 環境下では,null を渡すとダイアログから圧縮方法と圧縮のパラメータを選択できるようになる. /// </param> /// <param name="fps">作成されたビデオストリームのフレームレート</param> /// <param name="frameSize">ビデオフレームのサイズ</param> /// <param name="isColor">trueの場合,エンコーダはカラーフレームとしてエンコードする. falseの場合,グレースケールフレームとして動作する(現在のところ,このフラグは Windows でのみ利用できる).</param> /// <returns>CvVideoWriter</returns> #else /// <summary> /// Creates video writer structure. /// </summary> /// <param name="fileName">Name of the output video file. </param> /// <param name="apiPreference">allows to specify API backends to use. Can be used to enforce a specific reader implementation /// if multiple are available: e.g. cv::CAP_FFMPEG or cv::CAP_GSTREAMER.</param> /// <param name="fourcc">4-character code of codec used to compress the frames. For example, "PIM1" is MPEG-1 codec, "MJPG" is motion-jpeg codec etc. /// Under Win32 it is possible to pass null in order to choose compression method and additional compression parameters from dialog. </param> /// <param name="fps">Frame rate of the created video stream. </param> /// <param name="frameSize">Size of video frames. </param> /// <param name="isColor">If it is true, the encoder will expect and encode color frames, otherwise it will work with grayscale frames (the flag is currently supported on Windows only). </param> /// <returns></returns> #endif public bool Open(string fileName, VideoCaptureAPIs apiPreference, FourCC fourcc, double fps, Size frameSize, bool isColor = true) { ThrowIfDisposed(); if (string.IsNullOrEmpty(fileName)) { throw new ArgumentNullException(nameof(fileName)); } FileName = fileName; Fps = fps; FrameSize = frameSize; IsColor = isColor; NativeMethods.HandleException( NativeMethods.videoio_VideoWriter_open2(ptr, fileName, (int)apiPreference, (int)fourcc, fps, frameSize, isColor ? 1 : 0, out var ret)); GC.KeepAlive(this); return(ret != 0); }
/// <summary> /// ビデオライタを作成し、返す. /// </summary> /// <param name="fileName">出力するビデオファイルの名前</param> /// <param name="fourcc"> /// フレームを圧縮するためのコーデックを表す 4 文字.例えば,"PIM1" は,MPEG-1 コーデック, "MJPG" は,motion-jpeg コーデックである. /// Win32 環境下では,null を渡すとダイアログから圧縮方法と圧縮のパラメータを選択できるようになる. /// </param> /// <param name="fps">作成されたビデオストリームのフレームレート</param> /// <param name="frameSize">ビデオフレームのサイズ</param> /// <param name="isColor">trueの場合,エンコーダはカラーフレームとしてエンコードする. falseの場合,グレースケールフレームとして動作する(現在のところ,このフラグは Windows でのみ利用できる).</param> /// <returns>CvVideoWriter</returns> #else /// <summary> /// Creates video writer structure. /// </summary> /// <param name="fileName">Name of the output video file. </param> /// <param name="fourcc">4-character code of codec used to compress the frames. For example, "PIM1" is MPEG-1 codec, "MJPG" is motion-jpeg codec etc. /// Under Win32 it is possible to pass null in order to choose compression method and additional compression parameters from dialog. </param> /// <param name="fps">Framerate of the created video stream. </param> /// <param name="frameSize">Size of video frames. </param> /// <param name="isColor">If it is true, the encoder will expect and encode color frames, otherwise it will work with grayscale frames (the flag is currently supported on Windows only). </param> /// <returns></returns> #endif public VideoWriter(string fileName, FourCC fourcc, double fps, Size frameSize, bool isColor = true) : this(fileName, (int)fourcc, fps, frameSize, isColor) { }
/// <summary> /// ビデオライタを開く /// </summary> /// <param name="fileName">出力するビデオファイルの名前</param> /// <param name="fourcc"> /// フレームを圧縮するためのコーデックを表す 4 文字.例えば,"PIM1" は,MPEG-1 コーデック, "MJPG" は,motion-jpeg コーデックである. /// Win32 環境下では,null を渡すとダイアログから圧縮方法と圧縮のパラメータを選択できるようになる. /// </param> /// <param name="fps">作成されたビデオストリームのフレームレート</param> /// <param name="frameSize">ビデオフレームのサイズ</param> /// <param name="isColor">trueの場合,エンコーダはカラーフレームとしてエンコードする. falseの場合,グレースケールフレームとして動作する(現在のところ,このフラグは Windows でのみ利用できる).</param> /// <returns>CvVideoWriter</returns> #else /// <summary> /// Creates video writer structure. /// </summary> /// <param name="fileName">Name of the output video file. </param> /// <param name="fourcc">4-character code of codec used to compress the frames. For example, "PIM1" is MPEG-1 codec, "MJPG" is motion-jpeg codec etc. /// Under Win32 it is possible to pass null in order to choose compression method and additional compression parameters from dialog. </param> /// <param name="fps">Framerate of the created video stream. </param> /// <param name="frameSize">Size of video frames. </param> /// <param name="isColor">If it is true, the encoder will expect and encode color frames, otherwise it will work with grayscale frames (the flag is currently supported on Windows only). </param> /// <returns></returns> #endif public void Open(string fileName, FourCC fourcc, double fps, Size frameSize, bool isColor = true) { Open(fileName, (int)fourcc, fps, frameSize, isColor); }
/// <summary> /// ビデオライタを作成し、返す. /// </summary> /// <param name="filename">出力するビデオファイルの名前</param> /// <param name="fourcc"> /// フレームを圧縮するためのコーデックを表す 4 文字.例えば,"PIM1" は,MPEG-1 コーデック, "MJPG" は,motion-jpeg コーデックである. /// Win32 環境下では,null を渡すとダイアログから圧縮方法と圧縮のパラメータを選択できるようになる. /// </param> /// <param name="fps">作成されたビデオストリームのフレームレート</param> /// <param name="frameSize">ビデオフレームのサイズ</param> /// <param name="isColor">trueの場合,エンコーダはカラーフレームとしてエンコードする. falseの場合,グレースケールフレームとして動作する(現在のところ,このフラグは Windows でのみ利用できる).</param> /// <returns>CvVideoWriter</returns> #else /// <summary> /// Creates video writer structure. /// </summary> /// <param name="filename">Name of the output video file. </param> /// <param name="fourcc">4-character code of codec used to compress the frames. For example, "PIM1" is MPEG-1 codec, "MJPG" is motion-jpeg codec etc. /// Under Win32 it is possible to pass null in order to choose compression method and additional compression parameters from dialog. </param> /// <param name="fps">Framerate of the created video stream. </param> /// <param name="frameSize">Size of video frames. </param> /// <param name="isColor">If it is true, the encoder will expect and encode color frames, otherwise it will work with grayscale frames (the flag is currently supported on Windows only). </param> /// <returns></returns> #endif public CvVideoWriter(string filename, FourCC fourcc, double fps, CvSize frameSize, bool isColor) : this(filename, (int)fourcc, fps, frameSize, isColor) { }
/// <summary> /// ビデオライタを作成し、返す. /// </summary> /// <param name="filename">出力するビデオファイルの名前</param> /// <param name="fourcc"> /// フレームを圧縮するためのコーデックを表す 4 文字.例えば,"PIM1" は,MPEG-1 コーデック, "MJPG" は,motion-jpeg コーデックである. /// Win32 環境下では,null を渡すとダイアログから圧縮方法と圧縮のパラメータを選択できるようになる. /// </param> /// <param name="fps">作成されたビデオストリームのフレームレート</param> /// <param name="frameSize">ビデオフレームのサイズ</param> /// <returns>CvVideoWriter</returns> #else /// <summary> /// Creates video writer structure. /// </summary> /// <param name="filename">Name of the output video file. </param> /// <param name="fourcc">4-character code of codec used to compress the frames. For example, "PIM1" is MPEG-1 codec, "MJPG" is motion-jpeg codec etc. /// Under Win32 it is possible to pass null in order to choose compression method and additional compression parameters from dialog. </param> /// <param name="fps">Framerate of the created video stream. </param> /// <param name="frameSize">Size of video frames. </param> /// <returns></returns> #endif public CvVideoWriter(string filename, FourCC fourcc, double fps, CvSize frameSize) : this(filename, (int)fourcc, fps, frameSize, true) { }