質問: cv2.imread('target.jpg') cv2.imwrite('after.jpg', im) ``` ### 試したこと 下記を参考に、IMWRITE_JPEG_QUALITYなどjpg書き出し時の設定値をすべて試して書き出したのですが、やはりファイルサイズが大きくなってしまいます。 また、読み込み元jpgと書き出し後jpgをWinMergeやImageMagickを用いて比較したところ、確かに大きな差分が確認できるのですが、その原因が何なのか不明な状態です。 上記原因と、ファイルサイズをあまり変えずに書き出す方法をご教授いただけると助かります。 よろしくお願いいたします。
回答: JPEGのクオリティの設定が元の画像より高いのでサイズが大きくなっていると思います。 ``` import cv2 im = cv2.imread('image1.jpg') cv2.imwrite('after10.jpg', im,[cv2.IMWRITE_JPEG_QUALITY,10]) cv2.imwrite('after20.jpg', im,[cv2.IMWRITE_JPEG_QUALITY,20]) cv2.imwrite('after30.jpg', im,[cv2.IMWRITE_JPEG_QUALITY,30]) cv2.imwrite('after40.jpg', im,[cv2.IMWRITE_JPEG_QUALITY,40]) cv2.imwrite('after70.jpg', im,[cv2.IMWRITE_JPEG_QUALITY,70]) cv2.imwrite('after80.jpg', im,[cv2.IMWRITE_JPEG_QUALITY,80]) cv2.imwrite('after90.jpg', im,[cv2.IMWRITE_JPEG_QUALITY,90]) cv2.imwrite('after95.jpg', im,[cv2.IMWRITE_JPEG_QUALITY,95]) cv2.__version__ '3.4.1' ``` うちの環境では、上記のコードでクオリティの指定ができました。 windows10の環境です。元の画像によりますけど、テストした画像では60%以下にすると元の画像より小さくなるのを確認しました。