画像の読み込み・保存【OpenCV】

画像の読み込み

画像ファイルの読み込みはimread関数を用います。filenameに画像のパスを指定して、flagにImreadModes列挙型で読み込みのオプションを指定します。

以下の例では D:\BioTech-Lab\lena.jpg という画像ファイルを読み込んでみます。

lena.jpg

BGRカラー画像として画像を読み込む

import cv2
img = cv2.imread(r'D:\BioTech-Lab\lena.jpg')
print(img.shape)    # -> (512, 512, 3)

flagに何も指定しない場合はデフォルトでBGRカラー画像として読み込みまれます。
読み込まれたimgの形状からカラーチャネルが3つあることが分かります。

なお、もともとグレースケールの画像もflagに何もしない場合は強制的にBGRカラー画像として読み込まれてしまいます。

グレースケール画像として画像を読み込む

import cv2
img = cv2.imread(r'D:\BioTech-Lab\lena.jpg', cv2.IMREAD_GRAYSCALE)
print(img.shape)    # -> (512, 512)

flagにcv2.IMREAD_GRAYSCALEを指定することでグレースケール画像として読み込みまれます。ImreadModes列挙型のcv2.IMREAD_GRAYSCALEは内部的には数値の0として処理されるので、直接次のように記載しても構いません。

img = cv2.imread(r'D:\BioTech-Lab\lena.jpg', 0)

読み込まれたimgの形状はY軸とX軸しかないので、カラーチャネルが1つのグレースケールであることが分かります。

画像の保存

画像ファイルの保存にはimwrite関数を用います。

import cv2
cv2.imwrite(r'D:\BioTech-Lab\img.tif', img)

引数paramsにパラメーターを指定することで画像の保存条件を細かく指定することができます。例えば、画像imgをJPEGファイルで画像品質10で保存する場合は次のようになります。

import cv2
cv2.imwrite(r'D:\BioTech-Lab\img.jpg', img, (cv2.IMWRITE_JPEG_QUALITY, 10))

リファレンス

imread(filename, flags = cv2.IMREAD_COLOR)

@ [APIドキュメント]

  • 引数
    • filename : 画像のファイルパス(相対パス or 絶対パス) <str>
      • 扱える画像は次の通りです
        • Windows bitmaps – *.bmp, *.dib
        • JPEG files – *.jpeg, *.jpg, *.jpe
        • JPEG 2000 files – *.jp2
        • Portable Network Graphics – *.png
        • WebP – *.webp
        • Portable image format – *.pbm, *.pgm, *.ppm *.pxm, *.pnm
        • PFM files – *.pfm
        • Sun rasters – *.sr, *.ras
        • TIFF files – *.tiff, *.tif
        • OpenEXR Image files – *.exr
        • Radiance HDR – *.hdr, *.pic
        • Raster and Vector geospatial data supported by GDAL
    • flags : 画像の読み込み方法を指定するためのフラグをImreadModes列挙型で指定します <int>
  • 戻り値
    • retval : 読み込まれた画像データ <ndarray>

filenameで指定された画像ファイルを読み込み、ndarray配列として取得します。

  • 読み込む画像ファイルの形式は拡張子ではなく、画像データそのものから判別されます。
  • 画像のファイルパスに日本語が含まれている場合は読み込みに失敗します。
  • 画像の読み込みに失敗した場合(画像が存在しない、サポートされていない画像形式 etc.)は、特にエラーは返されずに空の配列が返されます。

imwrite(filename, img, params = None)

@ [APIドキュメント]

  • 引数
    • filename : 保存して作成する画像ファイルの名前 <str>
      • この拡張子によって保存する画像のファイル形式が決定されます
      • サポートされている画像形式はimread関数と同様です
    • img : 保存する画像 <ndarray>
    • params : 画像フォーマットごとの保存パラメーター <tuple>
      • ImwriteFlags列挙型でパラメータ名を指定し、パラメータ名と値をタプルで次のように設定する
        • (パラメータ名1, 値1, パラメータ名2, 値2, …)
      • ここでは、例えばJPEGファイルの圧縮レベルなどを指定できる
  • 戻り値
    • retval : 保存に成功したかどうかを表す値 <bool>

imgで指定された画像を、filenameで保存します。

列挙型

ImreadModes

@ [APIドキュメント]

imread関数におけるオプションを格納しています。

IMREAD_UNCHANGED-1画像を変換せずにそのまま読み込む
アルファ・チャンネル(透明度)が含まれる場合はそれも維持される
IMREAD_GRAYSCALE0強制的にグレースケール画像として読み込む
IMREAD_COLOR1強制的にBGRカラー画像として読み込む.画像の透明度は無視される.
IMREAD_ANYDEPTH2
IMREAD_ANYCOLOR4
IMREAD_LOAD_GDAL8
IMREAD_REDUCED_GRAYSCALE_216
IMREAD_REDUCED_COLOR_217
IMREAD_REDUCED_GRAYSCALE_432
IMREAD_REDUCED_COLOR_433
IMREAD_REDUCED_GRAYSCALE_864
IMREAD_REDUCED_COLOR_865
IMREAD_IGNORE_ORIENTATION128

ImwriteFlags

@ [APIドキュメント]

IMWRITE_JPEG_QUALITY1JPEGフォーマットの画像品質
デフォルト値は95
IMWRITE_JPEG_PROGRESSIVE2
IMWRITE_JPEG_OPTIMIZE3
IMWRITE_JPEG_RST_INTERVAL4
IMWRITE_JPEG_LUMA_QUALITY5
IMWRITE_JPEG_CHROMA_QUALITY6
IMWRITE_PNG_COMPRESSION16
IMWRITE_PNG_STRATEGY17
IMWRITE_PNG_BILEVEL18
IMWRITE_PXM_BINARY32
IMWRITE_EXR_TYPE(3 << 4) + 0
IMWRITE_WEBP_QUALITY64
IMWRITE_PAM_TUPLETYPE128
IMWRITE_TIFF_RESUNIT256
IMWRITE_TIFF_XDPI257
IMWRITE_TIFF_YDPI258
IMWRITE_TIFF_COMPRESSION259
IMWRITE_JPEG2000_COMPRESSION_X1000272

関連記事・スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です