Python – OpenCV – imread(), imwrite() increases the size of png

imageimage-sizeopencvpython

I wanted to try out some simple operations on files and I started with opening and saving files (I use Python)

image = cv2.imread("image.png")
cv2.imwrite("image_processed.png", image)

After this operation my original image from 33kB transforms into the same looking 144kB image.

I have tried doing something like this : http://opencv.itseez.com/modules/highgui/doc/reading_and_writing_images_and_video.html?highlight=imwrite#imwrite

    params = list()
    params.append(cv.CV_IMWRITE_PNG_COMPRESSION)
    params.append(8)

    image = cv2.imread("image.png")
    cv2.imwrite("image_processed.png",image,params)

But this does not change much ( size decreased to 132kB )

This is the image which I am working with:

enter image description here

Best Answer

Some png writers like GIMP write much better compressed PNGs than standard libpng, which is used by opencv. You can also open and save the image again with Imagemagick, and see what difference that makes (as compared to OpenCV).

There is even specialized software that tries to better re-compress PNGs, like pngcrush.

Can you provide the image in question? I would like to play with it, regarding file size optimization.

Related Topic