QA@IT

Python-OpenCVにてjpgファイルの読み込み後、書き出しを行うとファイルサイズが大きくなってしまう。

377 PV

前提・問題点

バージョン:
Python3.7.3
OpenCV4.1.0

imread関数であるjpgファイルを読み込み、
読み込んだ画像に何も処理を加えずimwrite関数でjpgファイルを書き出すと、
書き出し後のjpgのファイルサイズが読み込み元のjpgのファイルサイズより大きくなってしまいます。

具体的には以下の通りです。
読み込み元jpg:1,209KB
書き出し後jpg:1,608KB

異なるいくつかのjpgで試したのですが、
どれも同様の比率でファイルサイズが大きくなってしまいます。

また、読み込み元画像と書き出し後画像の
画素数、画像サイズ、チャンネル数を比較しても全く違いはありませんでした。

背景として、OpenCVを用いて加工対象画像にテキストを乗せて書き出しを行っていたのですが、
ファイルサイズが異常に大きくなってしまっていたため、
試しにimreadの読み込み後、加工処理を行わずimwriteを実行した次第です。
 

ソースコード

import cv2

im = cv2.imread('target.jpg')
cv2.imwrite('after.jpg', im)

 

試したこと

下記を参考に、IMWRITE_JPEG_QUALITYなどjpg書き出し時の設定値をすべて試して書き出したのですが、やはりファイルサイズが大きくなってしまいます。

https://docs.opencv.org/3.4.3/d4/da8/group__imgcodecs.html

また、読み込み元jpgと書き出し後jpgをwinmergeやimagemagickを用いて比較したところ、
確かに大きな差分が確認できるのですが、その原因が何なのか不明な状態です。

上記原因と、ファイルサイズをあまり変えずに書き出す方法をご教授いただけると助かります。
よろしくお願いいたします。

ウォッチ

この質問への回答やコメントをメールでお知らせします。