OpenCV – imread (), imwrite () aumenta el tamaño de png?

Quería probar algunas operaciones simples en archivos y comencé abriendo y guardando archivos (uso Python)

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

Después de esta operación, mi image original de 33kB se transforma en la misma imagen de 144kB.

He intentado hacer algo como esto: 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) 

Pero esto no cambia mucho (el tamaño disminuyó a 132kB)

Esta es la imagen con la que estoy trabajando:

introduzca la descripción de la imagen aquí

Algunos escritores png como GIMP escriben PNG mucho mejor comprimidos que libpng estándar, que es utilizado por opencv. También puede abrir y guardar la imagen nuevamente con Imagemgick, y ver qué diferencia hay (en comparación con OpenCV).

Incluso hay software especializado que intenta volver a comprimir PNG, como pngcrush.

¿Puedes aportar la imagen en cuestión? Me gustaría jugar con él, en relación con la optimización del tamaño del archivo.

Como lo insinuó ypnos, su archivo fuente es jpg (incluso si tiene la extensión png). Por eso, cuando lo guardas en formato png, utilizará más espacio, ya que estás cambiando el formato (jpg a png).

Intenta reemplazar la última línea con:

 cv2.imwrite("image_processed.jpg",image,params) 

Y verás que el tamaño no cambia mucho.

Como alternativa, mantenga el código tal como está, pero use una imagen diferente, como http://sofes.miximages.com/python/PNG_transparency_demonstration_1.png

Semi-relacionado, pero tuve el mismo problema con matplotlib.image.imsave : guardaría una imagen en escala de grises de 8 bits como 16 bits, que aumentó el tamaño, incluso después de usar scipy.misc.bytescale para asegurarse de que era una Matriz de 8 bits. Sin embargo, scipy.misc.imsave guardó correctamente como una imagen de 8 bits.

Puede usar una herramienta de línea de comando de terceros que se opina para volver a comprimir y reducir el tamaño del archivo png sin perder nada.

Referencia:

http://optipng.sourceforge.net/pngtech/optipng.html

https://github.com/johnpaulada/optipng