Python × 画像処理

【2行だけ】Python/OpenCVでPNG画像とJPG画像を相互に変換するコード

2020-10-13

OpenCV PNG JPG

 

スクリーンショットとったけど、PNGファイルで保存されてる。JPGファイルにしたいな〜

 

Python/OpenCVを使えば、2行でPNG画像をJPG画像に変換できるよ!もちろん逆の変換も

 

本記事では、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

ファイル名は「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_COMPRESSIONcv2.IMWRITE_PNG_COMPRESSIONをうまく調整して、適切な容量にしましょう。

 

画像容量を圧縮するコードは、次の記事でも紹介しているので、是非参考にしてみてください。

 

 

今回は、以上となります。

最後まで読んでいただき、ありがとうございました。

よく読まれている記事

insta-auto-post 1

  インスタって自動で投稿できないのかな。いつもスマホで投稿するの大変だし・・ Pythonを使えば、インスタで自動で投稿できるよ!!特別に紹介するね ...

python-consult_1 2

  AI・機械学習、データサイエンティスト、、やっぱりこれからの時代Pythonは勉強すべきだよね!   その通り。Pythonは今後も伸び ...

【保存版】PythonでできるExcel操作のまとめ一覧 3

  Excelで作業するのって大変だな〜 なにか楽な方法ないかな〜   Excelの集計や単純作業は、Pythonで楽にできるよ!!この一覧 ...

python-works 4

ここでは、サイト管理者のいなサラがこれまでPythonで作ったものをご紹介します。 以下のリンクで、実際の作り方やソースコードを公開しているので、ぜひ参考にして ...

-Python × 画像処理

© 2023 inasala note