【发布时间】:2020-01-12 13:50:26
【问题描述】:
我在 matplotlib 的子图中显示 OpenCV 图像时遇到问题
#Read random images from multiple directories
import random
animals = os.listdir('signs/train')
sample_images = []
for a in animals:
dirname = 'signs/train/' + a
files = random.sample(os.listdir(dirname), 5)
files = [dirname + '/' + im for im in files]
sample_images.extend(files)
del files, dirname, animals
print(sample_images)
# Output: ['signs/train/rooster/00000327.jpg', 'signs/train/rooster/00000329.jpg', 'signs/train/rooster/00000168.jpg', ..., 'signs/train/rooster/00000235.jpg', 'signs/train/rooster/00000138.jpg']
#Read using OpenCV and show in matplotlib's subplots
fig, ax = plt.subplots(12, 5,figsize=(15,15), sharex=True)
for idx, si in enumerate(sample_images):
i = idx % 5 # Get subplot row
j = idx // 5 # Get subplot column
image = cv2.imread(si)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
image = cv2.resize(image, (64, 64))
ax[i, j].plot(image)
plt.show()
我已经检查过每个图像是否已成功加载并使用 opencv 调整大小,但我不知道为什么我在matplotlib 的subplot 上绘制它们时不断收到以下错误。
ValueError Traceback (most recent call last)
<ipython-input-56-38cc921c1724> in <module>()
10 #image = Image.open(si)
11 #print(type(image))
---> 12 ax[i, j].plot(image)
13 plt.show()
3 frames
/usr/local/lib/python3.6/dist-packages/matplotlib/axes/_base.py in _xy_from_xy(self, x, y)
271 if x.ndim > 2 or y.ndim > 2:
272 raise ValueError("x and y can be no greater than 2-D, but have "
--> 273 "shapes {} and {}".format(x.shape, y.shape))
274
275 if x.ndim == 1:
ValueError: x and y can be no greater than 2-D, but have shapes (64,) and (64, 64, 3)
编辑 我忘了提到我已经尝试在一张图像上进行测试,并且它可以工作(即使它是 JPG 格式并且仍然使用 RGB 通道)
我做错了什么?
【问题讨论】:
标签: python opencv matplotlib