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をうまく調整して、適切な容量にしましょう。

 

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

 

 

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

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

よく読まれている記事

se-shikaku 1

  社内SEになるには資格って必要?社内SEでキャリアップするときにおすすめの資格は? 回答としては、 社内SEは、対人スキル、実務での対応力や最新情 ...

社内SEの仕事内容 2

  社内SEってどんな仕事なんだろ~ 検索しても転職サイトの記事ばかりでよく分からない・・   確かにそうですね。。実経験を基に、社内SE( ...

side-work-trial 3

  コロナで会社の経営も不安。。個人でお金稼ぎたいな~ 今、こう考えるサラリーマン、OLの方はごまんといると思います。   僕は、本業では社 ...

adsense-pass 4

【3記事で一発合格】Google AdSense申請に合格したブログ情報 こんにちは、いなサラ(@いなサラ|田舎の情シスサラリーマン)です。 2019年10月5 ...

-Python × 画像処理

© 2020 inasala note