Python 2.7.14导入PNG用于深度学习的最简方法咨询
在Python 2.7.14中导入PNG用于深度学习的最简实现方法
嘿,作为同样从自学编程起步的人,我太懂你想找简洁靠谱实现的心情了!先聊聊你现有代码的几个小问题,再给你两种适配Python 2.7.14的实用方案:
先修正你现有Scipy代码的小问题
你写的代码思路是对的,但有两处细节容易踩坑:
- Windows系统的路径别用
/E:/...这种格式,建议用原始字符串(加个r前缀)或者双反斜杠\\,避免路径识别错误 - 最后一行
from scipy im...是语法错误,直接删掉就行
修正后的Scipy代码:
import scipy.misc import glob # 用原始字符串处理Windows路径,避免转义问题 for image_path in glob.glob(r"E:\_SAMM_Projects\gemini_hikai_DM_hack_complete\export\contact_frames\boat\*.png"): # 读取图片为numpy数组(深度学习模型最常用的格式) image = scipy.misc.imread(image_path) print(image.shape) # 输出 (高度, 宽度, 通道数),灰度图会是(高度, 宽度) print(image.dtype) # 一般是uint8(0-255的整数)
小提醒:scipy.misc.imread在Python3里已经被弃用,但Python2.7.14对应的Scipy版本(比如0.19.x)还能正常用,不过如果后续有升级计划,更推荐下面的方法。
更推荐的方案:用Pillow(稳定且通用)
Pillow是Python处理图片的标准库,安装简单,兼容性拉满,不管是后续做图片预处理还是对接深度学习框架(比如旧版TensorFlow、Keras)都很顺手。
- 先安装适配Python2.7的Pillow版本:
pip install pillow==5.4.1 # 这个版本完美兼容Python2.7
- 最简实现代码:
from PIL import Image import numpy as np import glob for image_path in glob.glob(r"E:\_SAMM_Projects\gemini_hikai_DM_hack_complete\export\contact_frames\boat\*.png"): # 打开图片文件 img = Image.open(image_path) # 转换成numpy数组(直接对接深度学习模型的输入格式) image = np.array(img) print(image.shape) print(image.dtype)
深度学习额外小技巧
- 模型一般需要float类型的输入,你可以把读取后的数组转成float32并归一化到0-1区间:
image = image.astype(np.float32) / 255.0 - 如果是灰度图,数组是2维的,要是模型要求3通道输入,加一行转成3维:
image = np.expand_dims(image, axis=-1)
内容的提问来源于stack exchange,提问作者Dave Miyamoto
相关产品推荐
相关产品推荐

