2022年2月8日火曜日

【OpenCV】imwriteによる画像保存

画像処理ライブラリOpenCVで画像をファイルに保存するにはimwriteを使う。
OpenCVを使うには次のようにインポートが必要。

import cv2




1. imwriteの書式

imwriteの書式は以下

cv2.imwrite(filename, img[, params])	
引数 意味
filename パスとファイル名(+拡張子)。 サポートされている拡張子は以下(OpenCV 4.5.5)
-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
img 保存する画像
params オプション。Imwrite flagsを指定。
パラメーターID、パラメーター値をセットで指定する。


jpegファイルを読み出して、pngファイルに保存する例。

import cv2

img = cv2.imread('test.jpg')

cv2.imwrite('test.png', img)


2. jpeg保存時のcv2.IMWRITE_JPEG_QUALITY

jpegファイルで保存する際にImwrite flagsとしてcv2.IMWRITE_JPEG_QUALITYと値を指定することで保存時のクオリティ設定ができる。値は0-100の間で設定する(大きいほど高品質)。指定しない場合はデフォルト値の95となる。
下の画像 'promenade.jpg' を保存する(フリー写真素材ぱくたそより)。画像サイズ400x600ピクセルでファイルサイズ239KB。



品質80で保存。ファイルサイズが102KBになる。

import cv2

img = cv2.imread('promenade.jpg')
cv2.imwrite('promenade_80.jpg', img, (cv2.IMWRITE_JPEG_QUALITY, 80))


品質20で保存。ファイルサイズが28.6KBになる。

import cv2

img = cv2.imread('promenade.jpg')
cv2.imwrite('promenade_20.jpg', img, (cv2.IMWRITE_JPEG_QUALITY, 20))




3. リファレンス

OpenCV > Image file reading and writing > imwrite()
OpenCV > Flags used for image file reading and writing > ImwriteFlags

使用したバージョン:Python 3.8.12 / OpenCV 4.5.5

0 件のコメント:

コメントを投稿