存在三维图像的不一致
Inconsistency in presence of third dimension of images
我是运行 Python 中的一个图像分类任务。作为预处理的一部分,我需要将所有图像重塑为相同的尺寸。通过这样做,我注意到一些 jpeg 和 png 具有三维空间的特性,而有些则没有。为什么会这样?我如何进一步规范化数据?
图片都是彩色图片,即使我下载图片到我的电脑上,我得到的形状也是一样的。
from PIL import Image
import requests
from io import BytesIO
import base64
import numpy as np
for url in [
r'https://c7.uihere.com/files/35/692/872/wikimedia-commons-measuring-scales-clip-art-orthodontist-thumb.jpg',
r'https://thedesignlove.com/wp-content/uploads/2018/02/297-Food-Stop-Logo-Template.jpg',
r'https://upload.wikimedia.org/wikipedia/commons/f/ff/BTS_logo_%282017%29.png',
]:
response = requests.get(url)
img = Image.open(BytesIO(response.content))
print(np.asarray(img).shape)
data = '''R0lGODlhDwAPAKECAAAAzMzM/////wAAACwAAAAADwAPAAACIISPeQHsrZ5ModrLlN48CXF8m2iQ3YmmKqVlRtW4MLwWACH+H09wdGltaXplZCBieSBVbGVhZCBTbWFydFNhdmVyIQAAOw=='''
img = Image.open(BytesIO(base64.b64decode(data)))
print(np.asarray(img).shape)
输出为:
(310, 310)
(600, 650, 3)
(1800, 1800, 4)
(15, 15)
如你所见,有时3维不存在,有时即使存在,也不是一个一致的数字。
如果您将这些图像下载到您的计算机,并查看图像详细信息,您会发现它们的 "colors"(通道)数量和大小不同。
有编程的方法可以做到这一点,但如果你在 windows,你可以右击然后 select "details".
图像“https://c7.uihere.com/files/35/692/872/wikimedia-commons-measuring-scales-clip-art-orthodontist-thumb.jpg”
是 310 x 310 单通道(8 位)图像。
图像“https://thedesignlove.com/wp-content/uploads/2018/02/297-Food-Stop-Logo-Template.jpg”是一张 650x600 3 通道(24 位)图像。
图像“https://upload.wikimedia.org/wikipedia/commons/f/ff/BTS_logo_%282017%29.png”似乎是 1800x1800 4 通道(32 位)图像。可能是RGBA格式(A是"alpha"通道,通常用来描述opacity/transparency级)。
所以基本上,您看到的所有输出数据似乎都是正确的,我看不出有任何问题。 (注意 - 我没有费心看你的第四个案例 - 原始数据图像)
我是运行 Python 中的一个图像分类任务。作为预处理的一部分,我需要将所有图像重塑为相同的尺寸。通过这样做,我注意到一些 jpeg 和 png 具有三维空间的特性,而有些则没有。为什么会这样?我如何进一步规范化数据?
图片都是彩色图片,即使我下载图片到我的电脑上,我得到的形状也是一样的。
from PIL import Image
import requests
from io import BytesIO
import base64
import numpy as np
for url in [
r'https://c7.uihere.com/files/35/692/872/wikimedia-commons-measuring-scales-clip-art-orthodontist-thumb.jpg',
r'https://thedesignlove.com/wp-content/uploads/2018/02/297-Food-Stop-Logo-Template.jpg',
r'https://upload.wikimedia.org/wikipedia/commons/f/ff/BTS_logo_%282017%29.png',
]:
response = requests.get(url)
img = Image.open(BytesIO(response.content))
print(np.asarray(img).shape)
data = '''R0lGODlhDwAPAKECAAAAzMzM/////wAAACwAAAAADwAPAAACIISPeQHsrZ5ModrLlN48CXF8m2iQ3YmmKqVlRtW4MLwWACH+H09wdGltaXplZCBieSBVbGVhZCBTbWFydFNhdmVyIQAAOw=='''
img = Image.open(BytesIO(base64.b64decode(data)))
print(np.asarray(img).shape)
输出为:
(310, 310)
(600, 650, 3)
(1800, 1800, 4)
(15, 15)
如你所见,有时3维不存在,有时即使存在,也不是一个一致的数字。
如果您将这些图像下载到您的计算机,并查看图像详细信息,您会发现它们的 "colors"(通道)数量和大小不同。 有编程的方法可以做到这一点,但如果你在 windows,你可以右击然后 select "details".
图像“https://c7.uihere.com/files/35/692/872/wikimedia-commons-measuring-scales-clip-art-orthodontist-thumb.jpg” 是 310 x 310 单通道(8 位)图像。
图像“https://thedesignlove.com/wp-content/uploads/2018/02/297-Food-Stop-Logo-Template.jpg”是一张 650x600 3 通道(24 位)图像。
图像“https://upload.wikimedia.org/wikipedia/commons/f/ff/BTS_logo_%282017%29.png”似乎是 1800x1800 4 通道(32 位)图像。可能是RGBA格式(A是"alpha"通道,通常用来描述opacity/transparency级)。
所以基本上,您看到的所有输出数据似乎都是正确的,我看不出有任何问题。 (注意 - 我没有费心看你的第四个案例 - 原始数据图像)