将大型 RGB 图像转换为灰度图像时出现内存错误
Memory error converting large RGB image to grayscale
我正尝试在 python 中为某些学习项目加载原始彩色眼底图像。这些是大小约为 RGB 图像。 4000*2000*3。在将它们发送到我的模型中进行训练之前,我想将每个图像转换为灰度。为此,我尝试了以下两种方法:
方法一:
import matplotlib.image as mpimg
def rgb2gray(rgb):
return np.dot(rgb[...,:3], [0.299, 0.587, 0.114])
def load_images(folder):
images = []
for filename in os.listdir(folder):
img = mpimg.imread(os.path.join(folder, filename))
gray = rgb2gray(img)
images.append(gray)
return images
方法二:
from PIL import Image
def load_images(folder):
images = []
for filename in os.listdir(folder):
img = Image.open(os.path.join(folder, filename))
gray = img.convert('L')
images.append(gray)
return images
在这两种方法中,我分别在第 gray = rgb2gray(img)
行和 gray = img.convert('L')
行得到相同的 Memory Error
。
有什么方法可以一次将这么大的图像转换为灰度图像并将其存储为列表?
事实证明,问题不在于命令,而在于我的数据大小。正如@user894763 正确指出的那样,我的数据大小高达 10 GB,这是内存错误的原因。
我正尝试在 python 中为某些学习项目加载原始彩色眼底图像。这些是大小约为 RGB 图像。 4000*2000*3。在将它们发送到我的模型中进行训练之前,我想将每个图像转换为灰度。为此,我尝试了以下两种方法:
方法一:
import matplotlib.image as mpimg
def rgb2gray(rgb):
return np.dot(rgb[...,:3], [0.299, 0.587, 0.114])
def load_images(folder):
images = []
for filename in os.listdir(folder):
img = mpimg.imread(os.path.join(folder, filename))
gray = rgb2gray(img)
images.append(gray)
return images
方法二:
from PIL import Image
def load_images(folder):
images = []
for filename in os.listdir(folder):
img = Image.open(os.path.join(folder, filename))
gray = img.convert('L')
images.append(gray)
return images
在这两种方法中,我分别在第 gray = rgb2gray(img)
行和 gray = img.convert('L')
行得到相同的 Memory Error
。
有什么方法可以一次将这么大的图像转换为灰度图像并将其存储为列表?
事实证明,问题不在于命令,而在于我的数据大小。正如@user894763 正确指出的那样,我的数据大小高达 10 GB,这是内存错误的原因。