画像とビデオの読み込みと書き込み ================================================ .. highlight:: c .. index:: LoadImage .. _LoadImage: LoadImage --------- `id=0.226613069435 Comments from the Wiki `__ .. cfunction:: IplImage* cvLoadImage( const char* filename, int iscolor=CV_LOAD_IMAGE_COLOR ) ファイルから 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 .. _LoadImageM: LoadImageM ---------- `id=0.876091387352 Comments from the Wiki `__ .. cfunction:: CvMat* cvLoadImageM( const char* filename, int iscolor=CV_LOAD_IMAGE_COLOR ) ファイルから,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 .. _SaveImage: SaveImage --------- `id=0.794671501085 Comments from the Wiki `__ .. cfunction:: int cvSaveImage( const char* filename, const CvArr* image ) 指定したファイルに画像を保存します. :param filename: ファイル名. :param image: 保存される画像. 関数 ``cvSaveImage`` は,指定したファイルに画像を保存します.画像フォーマットは, ``filename`` の拡張子により決定されます( :ref:`LoadImage` を参照してください).この関数では,8ビットシングルチャンネル,あるいは3チャンネル(チャンネルは 'BGR' の順番)画像のみを保存することができます.ビット深度やチャンネル順序が異なったフォーマットの場合,保存する前に関数 ``cvCvtScale`` と ``cvCvtColor`` を利用して変換するか,汎用的な関数 ``cvSave`` を利用して,XML,YAMLフォーマットで保存します. .. index:: CvCapture .. _CvCapture: CvCapture --------- `id=0.687807161305 Comments from the Wiki `__ .. ctype:: CvCapture ビデオキャプチャ構造体. .. cfunction:: typedef struct CvCapture CvCapture 構造体 ``CvCapture`` は,パブリックインタフェースを持たず,ビデオキャプチャ関数のパラメータとしてのみ利用されます. .. index:: CaptureFromCAM .. _CaptureFromCAM: CaptureFromCAM -------------- `id=0.947129123665 Comments from the Wiki `__ .. cfunction:: CvCapture* cvCaptureFromCAM( int index ) カメラからのビデオキャプチャを初期化します. :param index: 利用されるカメラのインデックス.カメラが1台しかないか,どのカメラを使うかが問題ではない場合は,-1 を渡しても構いません. 関数 ``cvCaptureFromCAM`` は,カメラからビデオストリームを読み込むための構造体 CvCapture を確保,初期化します.現在のところ,Windowsでは Video for Windows (VFW) および Matrox Imaging Library (MLL)の2つ,Linux では V4L および FireWire (IEEE1394)の2つのカメラインタフェースを利用できます. この構造体を解放するには, :ref:`ReleaseCapture` を利用してください. .. index:: CaptureFromFile .. _CaptureFromFile: CaptureFromFile --------------- `id=0.682853440274 Comments from the Wiki `__ .. cfunction:: CvCapture* cvCaptureFromFile( const char* filename ) ファイルからのビデオキャプチャを初期化します. :param filename: ビデオファイル名. 関数 ``cvCaptureFromFile`` は,指定されたファイルからビデオストリームを読み込むための構造体 CvCapture を確保し,それを初期化します.どのようなコーデックとファイルフォーマットがサポートされるかは,バックエンドのライブラリに依存します.Windows HighGuiでは,Video for Windows (VFW) が利用され,Linux では,ffmpegが,Mac OS X では,QuickTime が用いられます.どのようなビデオファイルをどのように用意するかに関しては,それぞれのビデオコーデックの説明を参照してください. 確保された構造体が使われなくなった後は,関数 :ref:`ReleaseCapture` によって解放されるべきです. .. index:: GetCaptureProperty .. _GetCaptureProperty: GetCaptureProperty ------------------ `id=0.39836002136 Comments from the Wiki `__ .. cfunction:: double cvGetCaptureProperty( CvCapture* capture, int property_id ) ビデオキャプチャのプロパティを取得します. :param capture: ビデオキャプチャ構造体. :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_FORMAT** retrieve() によって返されるMat オブジェクトのフォーマット. * **CV_CAP_PROP_MODE** 現在のキャプチャモードを表す,バックエンド固有の値. * **CV_CAP_PROP_BRIGHTNESS** 画像の明るさ(カメラの場合のみ). * **CV_CAP_PROP_CONTRAST** 画像のコントラスト(カメラの場合のみ). * **CV_CAP_PROP_SATURATION** 画像の彩度(カメラの場合のみ). * **CV_CAP_PROP_HUE** 画像の色相(カメラの場合のみ). * **CV_CAP_PROP_GAIN** 画像のゲイン(カメラの場合のみ). * **CV_CAP_PROP_EXPOSURE** 露出(カメラの場合のみ). * **CV_CAP_PROP_CONVERT_RGB** 画像がRGBに変換されるか否かを表す,ブール値のフラグ. * **CV_CAP_PROP_WHITE_BALANCE** 現在のところサポートされていません. * **CV_CAP_PROP_RECTIFICATION** TOWRITE(注意:現在のところ,DC1394 v 2.x バックエンドでのみサポートされます). 関数 ``cvGetCaptureProperty`` は,カメラあるいはビデオファイルの指定されたプロパティを取得します. .. index:: GrabFrame .. _GrabFrame: GrabFrame --------- `id=0.277773158031 Comments from the Wiki `__ .. cfunction:: int cvGrabFrame( CvCapture* capture ) カメラあるいはファイルからのフレームを確定します. :param capture: ビデオキャプチャ構造体 関数 ``cvGrabFrame`` は,カメラあるいはファイルからのフレームを確定します.確定されたフレームは,構造体内部に保存されます.この関数の目的は,複数のカメラを同時に読み込む必要がある場合でも同期がとれるように,フレームを *高速に* 確定することです.確定されたフレームは,(カメラ/ドライバによって定義される)圧縮フォーマットで保存されている可能性があるので,これをこのまま扱うことはありません.確定されたフレームを実際に取り出すには, :ref:`RetrieveFrame` を利用します. .. index:: QueryFrame .. _QueryFrame: QueryFrame ---------- `id=0.607270082218 Comments from the Wiki `__ .. cfunction:: IplImage* cvQueryFrame( CvCapture* capture ) カメラあるいはファイルからフレームを取得し,それを返します. :param capture: ビデオキャプチャ構造体. 関数 ``cvQueryFrame`` は,カメラあるいはビデオファイルからフレームを取得し,それを展開して返します.この関数は,単に関数 :ref:`GrabFrame` と :ref:`RetrieveFrame` の組み合わせですが,1度の呼び出しで済みます.返された画像は,ユーザによって解放されたり変更されたりするべきではありません.また,エラーが起きて,NULLが返される場合もあります. .. index:: ReleaseCapture .. _ReleaseCapture: ReleaseCapture -------------- `id=0.11562144684 Comments from the Wiki `__ .. cfunction:: void cvReleaseCapture( CvCapture** capture ) 構造体 CvCapture を解放します. :param capture: ビデオキャプチャ構造体へのポインタ. 関数 ``cvReleaseCapture`` は, :ref:`CaptureFromFile` または :ref:`CaptureFromCAM` によって確保された構造体 CvCapture を解放します. .. index:: RetrieveFrame .. _RetrieveFrame: RetrieveFrame ------------- `id=0.833690901546 Comments from the Wiki `__ .. cfunction:: IplImage* cvRetrieveFrame( CvCapture* capture ) cvGrabFrame によって確定された画像を実際に取り出します. :param capture: ビデオキャプチャ構造体. 関数 ``cvRetrieveFrame`` は,関数 :ref:`GrabFrame` によって確定された画像へのポインタを返します.返された画像は,ユーザによって解放されたり変更されたりするべきではありません.また,エラーが起きて,NULLが返される場合もあります. .. index:: SetCaptureProperty .. _SetCaptureProperty: SetCaptureProperty ------------------ `id=0.758142634947 Comments from the Wiki `__ .. cfunction:: int cvSetCaptureProperty( CvCapture* capture, int property_id, double value ) ビデオキャプチャプロパティを設定します. :param capture: ビデオキャプチャ構造体. :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_FORMAT** retrieve() によって返されるMat オブジェクトのフォーマット. * **CV_CAP_PROP_MODE** 現在のキャプチャモードを表す,バックエンド固有の値. * **CV_CAP_PROP_BRIGHTNESS** 画像の明るさ(カメラの場合のみ). * **CV_CAP_PROP_CONTRAST** 画像のコントラスト(カメラの場合のみ). * **CV_CAP_PROP_SATURATION** 画像の彩度(カメラの場合のみ). * **CV_CAP_PROP_HUE** 画像の色相(カメラの場合のみ). * **CV_CAP_PROP_GAIN** 画像のゲイン(カメラの場合のみ). * **CV_CAP_PROP_EXPOSURE** 露出(カメラの場合のみ). * **CV_CAP_PROP_CONVERT_RGB** 画像がRGBに変換されるか否かを表す,ブール値のフラグ. * **CV_CAP_PROP_WHITE_BALANCE** 現在のところサポートされていません. * **CV_CAP_PROP_RECTIFICATION** TOWRITE(注意:現在のところ,DC1394 v 2.x バックエンドでのみサポートされます). :param value: プロパティの値. 関数 ``cvSetCaptureProperty`` は,ビデオキャプチャの指定されたプロパティを設定します.現在のところ,この関数はビデオファイルのみをサポートしています: ``CV_CAP_PROP_POS_MSEC, CV_CAP_PROP_POS_FRAMES, CV_CAP_PROP_POS_AVI_RATIO`` . 現在のところ,FFMPEGを利用するLinuxの最新のCVS版を利用する場合は,この関数は何もしないことに注意してください(関数の中身は if 0 で隠されています). .. index:: CreateVideoWriter .. _CreateVideoWriter: CreateVideoWriter ----------------- `id=0.54886599058 Comments from the Wiki `__ .. cfunction:: typedef struct CvVideoWriter CvVideoWriter CvVideoWriter* cvCreateVideoWriter( const char* filename, int fourcc, double fps, CvSize frame_size, int is_color=1 ) ビデオファイルライタを作成します. :param filename: 出力されるビデオファイル名. :param fourcc: フレームを圧縮するのに用いられるコーデックを示す4文字コード.例えば, ``CV_FOURCC('P','I','M,'1')`` は,MPEG-1 コーデック, ``CV_FOURCC('M','J','P','G')`` は,モーションJPEGコーデックを表します. Win32環境では,-1 を指定して,圧縮方法と圧縮パラメータを選択するダイアログを出すことができます. Win32環境で0が指定され,さらにファイル名がaviの拡張子であれば,非圧縮AVIファイルを生成するビデオライタが作成されます :param fps: 作成されるビデオストリームのフレームレート. :param frame_size: ビデオフレームのサイズ. :param is_color: これが0以外であれば,カラーフレームとしてエンコードを行います.そうでなければ,グレースケールフレームとして動作します(このフラグは,現在のところWindows環境でのみサポートされています). 関数 ``cvCreateVideoWriter`` は,ビデオライタ構造体を作成します. どのようなコーデックやファイルフォーマットがサポートされるかは,バックエンドのライブラリに依存します.WindowsのHighGuiではVideo for Windows (VFW)が,Linuxではffmpeg,Mac OS XではQuickTimeが利用されます.ファイルの仕様については,それぞれのビデオコーデックを参照してください. .. index:: ReleaseVideoWriter .. _ReleaseVideoWriter: ReleaseVideoWriter ------------------ `id=0.811490155732 Comments from the Wiki `__ .. cfunction:: void cvReleaseVideoWriter( CvVideoWriter** writer ) ビデオライタを解放します. :param writer: ビデオライタ構造体へのポインタ. 関数 ``cvReleaseVideoWriter`` は,ビデオファイルへの書き込みを終了し,その構造体を解放します. .. index:: WriteFrame .. _WriteFrame: WriteFrame ---------- `id=0.936613907232 Comments from the Wiki `__ .. cfunction:: int cvWriteFrame( CvVideoWriter* writer, const IplImage* image ) ビデオファイルにフレームを書き込みます. :param writer: ビデオライタ構造体. :param image: 書き込まれるフレーム. 関数 ``cvWriteFrame`` は,1つのフレームをビデオファイルに書き込み/追加します.