本記事では、Python/OpenCVを用いて、簡単にPNG画像をJPG画像に、JPG画像をPNG画像に変換する方法をご紹介します。
想定読者
・画像をPNGからJPGに変換したい。もしくは、JPGからPNGに変換したい。
Python/OpenCVでPNG画像をJPG画像に変換する実行環境
今回は、以下の実行環境でプログラムを実行しています。
・Linux
・Python 3.7.6
・Jupyterlab 1.2.6
・cv2:4.3.0
テスト画像としては、Pixabayからダウンロードした下の画像を使っていきます。
ファイル名は「input.jpg」と「input.png」します。
画像の容量は、395KBです。
Python/OpenCVでPNG画像をJPG画像に変換する方法
まずは、使うライブラリをインポートします。必要なライブラリはOpenCVのみです。
import cv2
それでは、OpenCVでPNG画像をJPG画像に変換するコードを見ていきます。
ホントに2行だけのコードでシンプルですね。
# PNG画像を読み込む
image = cv2.imread('input.png')
# JPG画像として保存する
cv2.imwrite('output.jpg', image, [int(cv2.IMWRITE_JPEG_QUALITY), 95])
保存するファイルの拡張子は、「jpg」とします。
ポイントは、cv2.IMWRITE_JPEG_QUALITYを設定するところです。
これは画像の品質を決めるパラメータで0から100までの値を指定でき、高い値ほど品質が良くなります。
Python/OpenCVでJPG画像をPNG画像に変換する方法
次は、OpenCVでJPG画像をPNG画像に変換するコードです。これも2行だけのコードになります。
# PNG画像を読み込む
image = cv2.imread('input.jpg')
# PNG画像として保存する
cv2.imwrite('output.png', image, [int(cv2.IMWRITE_PNG_COMPRESSION ), 1])
保存するファイルの拡張子は、「png」とします。
PNGで保存する場合、品質のパラメータはcv2.IMWRITE_PNG_COMPRESSIONとなります。
これは画像の品質を決めるパラメータで0から9までの値を指定でき、低い値ほど圧縮率が低く、品質が良くなります。
Python/OpenCVでPNGーJPGの画像変換で気をつけること
今回、PNGとJPGで相互の画像の変換をご紹介しましたが、変換により、画像の容量が大きくなることがよくあります。
実際に上で書いたコードで変換を行うと、インプット画像が395KBだったのが、
・JPG画像への変換後:500KB
・PNG画像への変換後:3MB
のように画像の容量が大きくなってしまします。
こういった時は、cv2.IMWRITE_PNG_COMPRESSIONとcv2.IMWRITE_PNG_COMPRESSIONをうまく調整して、適切な容量にしましょう。
画像容量を圧縮するコードは、次の記事でも紹介しているので、是非参考にしてみてください。
今回は、以上となります。
最後まで読んでいただき、ありがとうございました。