OpenCV imwrite について

2021年3月12日

はじめに

 OpenCV の imwrite を使った画像保存についてまとめた。

とりあえず関数を試してみたい方

実験用プログラム OpenCV_test の GitHubリポジトリ
URL
https://github.com/iryachi/OpenCV_test
実行ファイルだけ
https://github.com/iryachi/OpenCV_test/releases
使い方
https://iryachi.stars.ne.jp/opencv_test_imple/

inwrite関数について

bool cv:: inwrite (const String & filename, inputArray img,const std::vector<int>& params )

引数

filenameString&ファイル名保存するファイルのファイルパス, ファイル名
imginputArray入力画像保存する画像
paramsconst std::vector<int>&保存パラメータ保存時のパラメータ種類と値。
パラメータ1, 値1, パラメータ2, 値2 。。。 というリストで入力

返り値 bool

 保存に成功したかどうか。

保存パラメータ paramsについて (enum cv::ImwriteFlags)

パラメータ内容
IMWRITE_JPEG_QUALITYJpeg 保存
保存時の画質クオリティ設定 (0 – 100)
IMWRITE_JPEG_PROGRESSIVEJpeg 保存で プログレッシブにするかどうか。
0:ベースライン, 1:プログレッシブ
IMWRITE_JPEG_OPTIMIZEサイズ最適化を行うかどうか
0:行わない, 1:行う
IMWRITE_JPEG_RST_INTERVALリスタートマーカー位置のインターバル
0 – 65535
IMWRITE_JPEG_LUMA_QUALITY内容はよくわからない。。。  0 で未使用。
0 – 100
IMWRITE_JPEG_CHROMA_QUALITYクロマサブサンプリングのこと?  0 で未使用。
0 – 100
IMWRITE_PNG_COMPRESSIONpng保存
保存時の画質クオリティ設定 (0 – 9)
IMWRITE_PNG_STRATEGY png 保存時のパラメータ
値は ImwritePNGFlags
IMWRITE_PNG_BILEVELPBM 保存 バイナリレベル
0 or 1
IMWRITE_PXM_BINARYPBM 形式で保存するか
0:その他, 1:PBM 形式
IMWRITE_EXR_TYPE 
IMWRITE_WEBP_QUALITY内容はよくわからない。。。
1 – 100
IMWRITE_PAM_TUPLETYPE 内容はよくわからない。。。
IMWRITE_TIFF_RESUNIT 
IMWRITE_TIFF_XDPI 
IMWRITE_TIFF_YDPI 
IMWRITE_TIFF_COMPRESSION 
IMWRITE_JPEG2000_COMPRESSION_X10000 – 1000

おわりに

いろいろなフォーマットで保存するだけなら簡単だけど、パラメータの値変えるとどう変化するかはやってみて慣れないといけないかな。