存在图像三维空间时的不一致

时间:2019-01-01 18:03:08

标签: python computer-vision png jpeg

我正在用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)

如您所见,有时第三维不存在,有时即使存在,也不是一致的数字。

1 个答案:

答案 0 :(得分:3)

如果您将这些图像下载到计算机上,然后查看图像详细信息,您会发现它们的“颜色”(通道)数和大小不同。 有一些编程方式可以做到这一点,但是如果您使用的是Windows,则可以右键单击然后选择“详细信息”。

图片“ 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”通道,通常用于描述不透明度/透明度级别)。

因此,基本上,您在输出中看到的所有数据似乎都是正确的,在这里我看不到任何问题。 (注意-我不介意看看您的第四种情况-原始数据图像)