[PYTHON] Précautions à prendre lors de la manipulation des images png et jpg

L'erreur n'a pas pu être résolue à plusieurs reprises car les dimensions ne correspondaient pas lors du traitement d'image. les images png et les images jpg ne doivent pas seulement changer leurs extensions. Fondamentalement, jpg était une image couleur RVB et png avait une image qui était automatiquement convertie en RVBA avec transparence, mais ce n'est pas le cas.

python


# -*- coding: utf-8 -*-                                                                                                                                       
import os
import cv2
import sys
import numpy as np
from PIL import Image

path_jpg = "CMP_facade_DB_base/base/cmp_b0116.jpg "
path_png = "CMP_facade_DB_base/base/cmp_b0116.png "

image = np.asarray(Image.open(path_jpg))
print(Image.open(path_jpg))
print(image.shape)
image = np.asarray(Image.open(path_png))
print(Image.open(path_png))
print(image.shape)

résultat


<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=804x1024 at 0x7F5933E60F90>
(1024, 804, 3)
<PIL.PngImagePlugin.PngImageFile image mode=P size=804x1024 at 0x7F5933E60FD0>
(1024, 804)

liste des modes de bibliothèque d'oreillers

mode


1 (1-bit pixels, black and white, stored with one pixel per byte)
L (8-bit pixels, black and white)
P (8-bit pixels, mapped to any other mode using a color palette)
RGB (3x8-bit pixels, true color)
RGBA (4x8-bit pixels, true color with transparency mask)
CMYK (4x8-bit pixels, color separation)
YCbCr (3x8-bit pixels, color video format)
Note that this refers to the JPEG, and not the ITU-R BT.2020, standard
LAB (3x8-bit pixels, the L*a*b color space)
HSV (3x8-bit pixels, Hue, Saturation, Value color space)
I (32-bit signed integer pixels)
F (32-bit floating point pixels)

Quand je l'essaie avec ma propre image, les formats png et jpg sont dans le même mode rgba.

résultat


<PIL.PngImagePlugin.PngImageFile image mode=RGBA size=826x1169 at 0x7F0DF1873F50>
(1169, 826, 4)
<PIL.PngImagePlugin.PngImageFile image mode=RGBA size=494x699 at 0x7F0DF1873ED0>
(699, 494, 4)

La conversion se fait donc depuis le début.

Convertir png en mode P

python


path_png = "0003.png "
path_jpg = "0003.jpg "
image = Image.open(path_png).convert('P')
image.save(path_png)

Convertir de png en jpg

python


rgb_im = Image.open(path_png).convert('RGB')
rgb_im.save(path_jpg)

C'est devenu une dimension similaire.

résultat


<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=826x1169 at 0x111215190>
(1169, 826, 3)
<PIL.PngImagePlugin.PngImageFile image mode=P size=826x1169 at 0x111215210>
(1169, 826)

La dimension que vous voulez faire


<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=804x1024 at 0x7FA58C2E0F90>
(1024, 804, 3)
<PIL.PngImagePlugin.PngImageFile image mode=P size=804x1024 at 0x7FA58C2E0FD0>
(1024, 804)

La source

python


# -*- coding: utf-8 -*-
import os
import cv2
import sys
import numpy as np
from PIL import Image

path_png = "0002.png "
path_jpg = "0002.jpg "

image = Image.open(path_png).convert('P')
image.save(path_png)
rgb_im = Image.open(path_png).convert('RGB')
rgb_im.save(path_jpg)

print(image)
print(rgb_im)
print(np.asarray(image).shape)
print(np.asarray(rgb_im).shape)

Recommended Posts

Précautions à prendre lors de la manipulation des images png et jpg
[Version 2020] Procédure de développement du robot personnel et ses précautions
Application de gestion simple pour les images téléchargées et les images de visage
Précautions concernant cv2.cvtcolor
[Hikari-Python] Chapitre 07-01 Gestion des exceptions (erreurs et exceptions)
Précautions à prendre lors de la manipulation de Luigi
Principes de base de Pandas pour les débutants ④ Gestion des éléments de date et d'heure