gpt4 book ai didi

python - 在 python3.6 中使用 matplotlib 绘制增强图像

转载 作者:太空宇宙 更新时间:2023-11-04 09:50:55 25 4
gpt4 key购买 nike

我正在尝试从训练目录中绘制一堆增强图像。我正在使用 Keras 和 Tensorflow。可视化库是 matplotlib。我正在使用下面的代码在 6 行和 6 列中绘制 256 X 256 X 1 灰色图像。我得到的错误是

Invalid Dimensions for image data.

这是我使用的代码:-

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np

import keras
from keras.preprocessing.image import ImageDataGenerator

train_set = '/home/ai/IPI/Data/v1_single_model/Train/' # Use your own path
batch_size = 4

gen = ImageDataGenerator(rescale = 1. / 255)
train_batches = gen.flow_from_directory(
'data/train',
target_size=(256, 256),
batch_size=batch_size,
class_mode='binary')

def plot_images(img_gen, img_title):
fig, ax = plt.subplots(6,6, figsize=(10,10))
plt.suptitle(img_title, size=32)
plt.setp(ax, xticks=[], yticks=[])
plt.tight_layout(rect=[0, 0.03, 1, 0.95])
for (img, label) in img_gen:
for i in range(6):
for j in range(6):
if i*6 + j < 256:
ax[i][j].imshow(img[i*6 + j])
break

plot_images(train_batches, "Augmented Images")

下面是错误和 python 回溯的快照:-

---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-79-81bdb7f0d12e> in <module>()
----> 1 plot_images(train_batches, "Augmented Images")

<ipython-input-78-d1d4bba983d3> in plot_images(img_gen, img_title)
8 for j in range(6):
9 if i*6 + j < 32:
---> 10 ax[i][j].imshow(img[i*6 + j])
11 break

~/anaconda3/lib/python3.6/site-packages/matplotlib/__init__.py in inner(ax, *args, **kwargs)
1896 warnings.warn(msg % (label_namer, func.__name__),
1897 RuntimeWarning, stacklevel=2)
-> 1898 return func(ax, *args, **kwargs)
1899 pre_doc = inner.__doc__
1900 if pre_doc is None:

~/anaconda3/lib/python3.6/site-packages/matplotlib/axes/_axes.py in imshow(self, X, cmap, norm, aspect, interpolation, alpha, vmin, vmax, origin, extent, shape, filternorm, filterrad, imlim, resample, url, **kwargs)
5122 resample=resample, **kwargs)
5123
-> 5124 im.set_data(X)
5125 im.set_alpha(alpha)
5126 if im.get_clip_path() is None:

~/anaconda3/lib/python3.6/site-packages/matplotlib/image.py in set_data(self, A)
598 if (self._A.ndim not in (2, 3) or
599 (self._A.ndim == 3 and self._A.shape[-1] not in (3, 4))):
--> 600 raise TypeError("Invalid dimensions for image data")
601
602 self._imcache = None

TypeError: Invalid dimensions for image data

enter image description here

我做错了什么?

最佳答案

错误是告诉你哪里出了问题。您的图像的形状为 (1,n,m,1),在第一个循环运行中您选择 img[0],这导致数组的形状为 (n,m,1) 因此

self._A.ndim == 3 和 self._A.shape[-1] 不在 (3, 4) 中

来自matplotlib.pyplot.imshow(X, ...) documentation

X : array_like, shape (n, m) or (n, m, 3) or (n, m, 4)

但不是(n,m,1)。除此之外,img[i*6 + j] 会在 i*6 + j > 0 时失败。

图像 img 尺寸为 (样本、高度、宽度、 channel )img 是单个样本,因此 samples = 1;它是灰度的,因此 channels = 1。要获得形状为 (n,m) 的图像,您需要选择它

imshow(img[0,:,:,0]) 

关于python - 在 python3.6 中使用 matplotlib 绘制增强图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47829428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com