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)
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)
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