画像とビデオの読み込みと書き込み ================================================ .. highlight:: python .. index:: LoadImage cv::LoadImage ------------- .. function:: LoadImage(filename, iscolor=CV_LOAD_IMAGE_COLOR)->None ファイルから IplImage として画像を読み込みます. :param filename: 読み込むファイル名 :param iscolor: 読み込む画像のカラーの種類を指定します: * **CV_LOAD_IMAGE_COLOR** 画像は,強制的に3チャンネルカラー画像として読み込まれます * **CV_LOAD_IMAGE_GRAYSCALE** 画像は,強制的にグレースケール画像として読み込まれます * **CV_LOAD_IMAGE_UNCHANGED** 画像は,そのままの画像として読み込まれます 関数 ``cvLoadImage`` は,指定したファイルから画像を読み込み,その画像へのポインタを返します.現在のところ,以下のファイルフォーマットがサポートされています: * Windows bitmaps - BMP, DIB * JPEG files - JPEG, JPG, JPE * Portable Network Graphics - PNG * Portable image format - PBM, PGM, PPM * Sun rasters - SR, RAS * TIFF files - TIFF, TIF 現在の実装では,アルファチャンネルがもしあったとしても,出力画像からは取り除かれることに注意してください.例えば,4チャンネルRGBA画像は,RGB画像として読み込まれます. .. index:: LoadImageM cv::LoadImageM -------------- .. function:: LoadImageM(filename, iscolor=CV_LOAD_IMAGE_COLOR)->None ファイルから,CvMatとして画像を読み込みます. :param filename: 読み込むファイル名 :param iscolor: 読み込む画像のカラーの種類を指定します: * **CV_LOAD_IMAGE_COLOR** 画像は,強制的に3チャンネルカラー画像として読み込まれます * **CV_LOAD_IMAGE_GRAYSCALE** 画像は,強制的にグレースケール画像として読み込まれます * **CV_LOAD_IMAGE_UNCHANGED** 画像は,そのままの画像として読み込まれます 関数 ``cvLoadImageM`` は,指定されたファイルから画像を読み込み,その画像へのポインタを返します. 現在は,以下のファイルフォーマットをサポートしています: * Windows bitmaps - BMP, DIB * JPEG files - JPEG, JPG, JPE * Portable Network Graphics - PNG * Portable image format - PBM, PGM, PPM * Sun rasters - SR, RAS * TIFF files - TIFF, TIF 現在の実装では,アルファチャンネルがもしあったとしても,出力画像からは取り除かれることに注意してください.例えば,4チャンネルRGBA画像は,RGB画像として読み込まれます. .. index:: SaveImage cv::SaveImage ------------- .. function:: SaveImage(filename,image)-> None 指定したファイルに画像を保存します. :param filename: ファイル名 :type filename: str :param image: 保存される画像 :type image: :class:`CvArr` 関数 ``cvSaveImage`` は,指定したファイルに画像を保存します.画像フォーマットは, ``filename`` の拡張子により決定されます( :ref:`LoadImage` を参照してください).この関数では,8ビットシングルチャンネル,あるいは3チャンネル(チャンネルは 'BGR' の順番)画像のみを保存することができます.ビット深度やチャンネル順序が異なったフォーマットの場合,保存する前に関数 ``cvCvtScale`` と ``cvCvtColor`` を利用して変換するか,汎用的な関数 ``cvSave`` を利用して,XML,YAMLフォーマットで保存します. .. index:: CvCapture .. _CvCapture: CvCapture --------- .. class:: CvCapture ビデオキャプチャ構造体. 構造体 ``CvCapture`` は,パブリックインタフェースを持たず,ビデオキャプチャ関数のパラメータとしてのみ利用されます. .. index:: CaptureFromCAM cv::CaptureFromCAM ------------------ .. function:: CaptureFromCAM(index) -> CvCapture カメラからのビデオキャプチャを初期化します. :param index: 利用されるカメラのインデックス.カメラが1台しかないか,どのカメラを使うかが問題ではない場合は,-1 を渡しても構いません :type index: int 関数 ``cvCaptureFromCAM`` は,カメラからビデオストリームを読み込むための構造体 CvCapture を確保,初期化します.現在のところ,Windowsでは Video for Windows (VFW) および Matrox Imaging Library (MLL)の2つ,Linux では V4L および FireWire (IEEE1394)の2つのカメラインタフェースを利用できます. この構造体を解放するには, :ref:`ReleaseCapture` を利用してください. .. index:: CaptureFromFile cv::CaptureFromFile ------------------- .. function:: CaptureFromFile(filename) -> CvCapture ファイルからのビデオキャプチャを初期化します. :param filename: ビデオファイル名 :type filename: str 関数 ``cvCaptureFromFile`` は,指定されたファイルからビデオストリームを読み込むための構造体 CvCapture を確保し,それを初期化します.どのようなコーデックとファイルフォーマットがサポートされるかは,バックエンドのライブラリに依存します.Windows HighGuiでは,Video for Windows (VFW) が利用され,Linux では,ffmpegが,Mac OS X では,QuickTime が用いられます.どのようなビデオファイルをどのように用意するかに関しては,それぞれのビデオコーデックの説明を参照してください. 確保された構造体が使われなくなった後は,関数 :ref:`ReleaseCapture` によって解放されるべきです. .. index:: GetCaptureProperty cv::GetCaptureProperty ---------------------- .. function:: GetCaptureProperty(capture, property_id)->double ビデオキャプチャのプロパティを取得します. :param capture: ビデオキャプチャ構造体 :type capture: :class:`CvCapture` :param property_id: プロパティID.以下のうちの1つ: * **CV_CAP_PROP_POS_MSEC** ミリ秒単位で表される,フィルム中の現在位置,あるいはビデオキャプチャのタイムスタンプ値 * **CV_CAP_PROP_POS_FRAMES** 次にデコード/キャプチャされるフレームのインデックス.0基準 * **CV_CAP_PROP_POS_AVI_RATIO** ビデオファイル内の相対的な位置(0 - ファイルの開始位置, 1 - ファイルの終了位置) * **CV_CAP_PROP_FRAME_WIDTH** ビデオストリーム中のフレームの幅 * **CV_CAP_PROP_FRAME_HEIGHT** ビデオストリーム中のフレームの高さ * **CV_CAP_PROP_FPS** フレームレート * **CV_CAP_PROP_FOURCC** コーデックを表す4文字コード * **CV_CAP_PROP_FRAME_COUNT** ビデオファイル中のフレーム数 * **CV_CAP_PROP_BRIGHTNESS** 画像の明るさ(カメラの場合のみ) * **CV_CAP_PROP_CONTRAST** 画像のコントラスト(カメラの場合のみ) * **CV_CAP_PROP_SATURATION** 画像の彩度(カメラの場合のみ) * **CV_CAP_PROP_HUE** 画像の色相(カメラの場合のみ) :type property_id: int 関数 ``cvGetCaptureProperty`` は,カメラあるいはビデオファイルの指定されたプロパティを取得します. .. index:: GrabFrame cv::GrabFrame ------------- .. function:: GrabFrame(capture) -> int カメラあるいはファイルからのフレームを確定します. :param capture: ビデオキャプチャ構造体 :type capture: :class:`CvCapture` 関数 ``cvGrabFrame`` は,カメラあるいはファイルからのフレームを確定します.確定されたフレームは,構造体内部に保存されます.この関数の目的は,複数のカメラを同時に読み込む必要がある場合でも同期がとれるように,フレームを *高速に* 確定することです.確定されたフレームは,(カメラ/ドライバによって定義される)圧縮フォーマットで保存されている可能性があるので,これをこのまま扱うことはありません.確定されたフレームを実際に取り出すには, :ref:`RetrieveFrame` を利用します. .. index:: QueryFrame cv::QueryFrame -------------- .. function:: QueryFrame(capture) -> iplimage カメラあるいはファイルからフレームを取得し,それを返します. :param capture: ビデオキャプチャ構造体 :type capture: :class:`CvCapture` 関数 ``cvQueryFrame`` は,カメラあるいはビデオファイルからフレームを取得し,それを展開して返します.この関数は,単に関数 :ref:`GrabFrame` と :ref:`RetrieveFrame` の組み合わせですが,1度の呼び出しで済みます.返された画像は,ユーザによって解放されたり変更されたりするべきではありません.また,エラーが起きて,NULLが返される場合もあります. .. index:: RetrieveFrame cv::RetrieveFrame ----------------- .. function:: RetrieveFrame(capture) -> iplimage cvGrabFrame によって確定された画像を実際に取り出します. :param capture: ビデオキャプチャ構造体 :type capture: :class:`CvCapture` 関数 ``cvRetrieveFrame`` は,関数 :ref:`GrabFrame` によって確定された画像へのポインタを返します.返された画像は,ユーザによって解放されたり変更されたりするべきではありません.また,エラーが起きて,NULLが返される場合もあります. .. index:: SetCaptureProperty cv::SetCaptureProperty ---------------------- .. function:: SetCaptureProperty(capture, property_id,value)->None ビデオキャプチャプロパティを設定します. :param capture: ビデオキャプチャ構造体 :type capture: :class:`CvCapture` :param property_id: プロパティID.以下のうちの1つ: * **CV_CAP_PROP_POS_MSEC** ミリ秒単位で表される,フィルム中の現在位置,あるいはビデオキャプチャのタイムスタンプ値 * **CV_CAP_PROP_POS_FRAMES** 次にデコード/キャプチャされるフレームのインデックス.0基準 * **CV_CAP_PROP_POS_AVI_RATIO** ビデオファイル内の相対的な位置(0 - ファイルの開始位置, 1 - ファイルの終了位置) * **CV_CAP_PROP_FRAME_WIDTH** ビデオストリーム中のフレームの幅 * **CV_CAP_PROP_FRAME_HEIGHT** ビデオストリーム中のフレームの高さ * **CV_CAP_PROP_FPS** フレームレート * **CV_CAP_PROP_FOURCC** コーデックを表す4文字コード * **CV_CAP_PROP_BRIGHTNESS** 画像の明るさ(カメラの場合のみ) * **CV_CAP_PROP_CONTRAST** 画像のコントラスト(カメラの場合のみ) * **CV_CAP_PROP_SATURATION** 画像の彩度(カメラの場合のみ) * **CV_CAP_PROP_HUE** 画像の色相(カメラの場合のみ) :type property_id: int :param value: プロパティの値 :type value: float 関数 ``cvSetCaptureProperty`` は,ビデオキャプチャの指定されたプロパティを設定します.現在のところ,この関数はビデオファイルのみをサポートしています: ``CV_CAP_PROP_POS_MSEC, CV_CAP_PROP_POS_FRAMES, CV_CAP_PROP_POS_AVI_RATIO`` . 現在のところ,FFMPEGを利用するLinuxの最新のCVS版を利用する場合は,この関数は何もしないことに注意してください(関数の中身は if 0 で隠されています). .. index:: CreateVideoWriter cv::CreateVideoWriter --------------------- .. function:: CreateVideoWriter(filename, fourcc, fps, frame_size, is_color) -> CvVideoWriter ビデオファイルライタを作成します. :param filename: 出力されるビデオファイル名 :type filename: str :param fourcc: フレームを圧縮するのに用いられるコーデックを示す4文字コード.例えば, ``CV_FOURCC('P','I','M,'1')`` は,MPEG-1 コーデック, ``CV_FOURCC('M','J','P','G')`` は,モーションJPEGコーデックを表します. Win32環境では,-1 を指定して,圧縮方法と圧縮パラメータを選択するダイアログを出すことができます. Win32環境で0が指定され,さらにファイル名がaviの拡張子であれば,非圧縮AVIファイルを生成するビデオライタが作成されます :type fourcc: int :param fps: 作成されるビデオストリームのフレームレート :type fps: float :param frame_size: ビデオフレームのサイズ :type frame_size: :class:`CvSize` :param is_color: これが0以外であれば,カラーフレームとしてエンコードを行います.そうでなければ,グレースケールフレームとして動作します(このフラグは,現在のところWindows環境でのみサポートされています) :type is_color: int 関数 ``cvCreateVideoWriter`` は,ビデオライタ構造体を作成します. どのようなコーデックやファイルフォーマットがサポートされるかは,バックエンドのライブラリに依存します.WindowsのHighGuiではVideo for Windows (VFW)が,Linuxではffmpeg,Mac OS XではQuickTimeが利用されます.ファイルの仕様については,それぞれのビデオコーデックを参照してください. .. index:: WriteFrame cv::WriteFrame -------------- .. function:: WriteFrame(writer, image)->int ビデオファイルにフレームを書き込みます. :param writer: ビデオライタ構造体 :type writer: :class:`CvVideoWriter` :param image: 書き込まれるフレーム :type image: :class:`IplImage` 関数 ``cvWriteFrame`` は,1つのフレームをビデオファイルに書き込み/追加します.