SSブログ

画像処理・認識 [画像のロード] [OpenCV]

「HighGUI」技術

画像をディスクからロードする

◆ 画像ファイルを読み込む関数

OpenCV 関数名 書式、コメント
1.x系 cvLoadImage IplImage* cvLoadImage( const char* filename, int flags=CV_LOAD_IMAGE_COLOR )
2.x系 cv::LoadImage IplImage* cv::LoadImage( const char* filename, int flags=CV_LOAD_IMAGE_COLOR )
  cv::LoadImageM LoadImageM(filename, iscolor=CV_LOAD_IMAGE_COLOR)
ファイルから,CvMatとして画像を読み込む。

読み込む画像のカラーの種類

  • CV_LOAD_IMAGE_COLOR 画像は,強制的に3チャンネルカラー画像として読み込む
  • CV_LOAD_IMAGE_GRAYSCALE 画像は,強制的にグレースケール画像として読み込む
  • CV_LOAD_IMAGE_UNCHANGED 画像は,そのままの画像として読み込む

ファイルフォーマット

  • 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
読み込む画像がカラー/グレースケールのどちらか,とデプスを指定する. カラー/グレースケールの指定は,読み込まれた画像を 3 チャンネル(CV_LOAD_IMAGE_COLOR)に変換するか, 1チャンネル(CV_LOAD_IMAGE_GRAYSCALE)に変換するか,あるいは入力画像(CV_LOAD_IMAGE_ANYCOLOR)のままにしておくかを決める.
デプスの指定は,読み込まれた画像を,以前のバージョンの OpenCV で行われたように一つのカラーチャンネルに対して 8ビットに変換するか,入力画像のままにしておくかを決める.CV_LOAD_IMAGE_ANYDEPTH が渡された場合に取りうるピクセルフォーマットは, 8 ビット符号無し整数,16 ビット符号無し整数,32 ビット符号付き整数,32 ビット浮動小数点数である.
渡されたフラグが衝突する場合,小さい値を持つフラグが優先される. 例えば, CV_LOAD_IMAGE_COLOR | CV_LOAD_IMAGE_ANYCOLOR というフラグの場合は, 画像は 3 チャンネルとして読み込まれる. CV_LOAD_IMAGE_ANYCOLOR は,CV_LOAD_IMAGE_UNCHANGED と等価であるが, CV_LOAD_IMAGE_ANYCOLOR には,CV_LOAD_IMAGE_ANYDEPTH と併用できるという利点がある. よって,CV_LOAD_IMAGE_UNCHANGEDは今後利用すべきではない.
出来る限り忠実に画像を読み込みたい場合は, CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR を指定する。

[opencv.jp document より引用]

 

◆ 画像ファイルを書き込む関数

OpenCV 関数名 書式、コメント
1.x系 cvSaveImage int cvSaveImage( const char* filename, const CvArr* image )
2.x系 cv::SaveImage SaveImage(filename, image)
関数 cvSaveImage は,画像を指定したファイルに保存する. 画像フォーマットは,filename の拡張子により決定される(cvLoadImage を参照). この関数で保存できるのは,8 ビット 1チャンネル,あるいは 8 ビット3 チャンネル('BGR' の順)画像だけである. フォーマットやデプス,チャンネルの順序などが異なる場合は,保存する前に cvCvtScale と cvCvtColor を使って画像を変換するか,あるいは汎用的な関数 cvSave を利用して XML/YAML フォーマットで保存すること。

[opencv.jp document より引用]

 

本記事は以下の参考書を元に書いています。


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。