【发布时间】:2019-10-17 05:29:51
【问题描述】:
给定 2 张图像,np.concatenate 中的 axis = 0 和 axis = 1 分别连接行和列中的图像。
但axis = -1 将拼接图像的通道更改为6,这导致使用matplotlib 进行可视化时出现以下错误:
raise TypeError("Invalid dimensions for image data")
TypeError: Invalid dimensions for image data
我使用的代码:
import matplotlib.pyplot as plt
import numpy as np
img_A = cv2.imread('1.jpg')
img_B = cv2.imread('2.jpg')
conc_img = np.concatenate((img_A, img_B), axis=-1)
print "shape:\t imgA={},imgB={},conc_img={}".format(img_A.shape, img_B.shape, conc_img.shape)
plt.imshow(conc_img)
plt.show()
打印函数返回:
shape: imgA=(375, 500, 3),imgB=(375, 500, 3),conc_img=(375, 500, 6) # <<-- channel is changed to 6
如何可视化这个拼接的图像?
【问题讨论】:
-
能否分享这两张图片(1.jpg 和 2.jpg),如果可以的话?
-
根据 matplotlib imshow docs (matplotlib.org/3.1.1/api/_as_gen/matplotlib.pyplot.imshow.html) .. 您只能可视化 3 个通道或 4 个通道(第 4 个通道为 alpha/透明度)。 “支持的数组形状是:(M,N):带有标量数据的图像。数据使用颜色图进行可视化。(M,N,3):带有 RGB 值(0-1 浮点数或 0-255 整数)的图像. (M, N, 4):具有 RGBA 值(0-1 float 或 0-255 int)的图像,即包括透明度。” ... 拥有 6 个频道的最终目的是什么?
-
你明白为什么你会得到尺寸 6 的尺寸吗?如果 3 个值代表颜色,那么 6 应该做什么?你期待什么样的可视化?
-
重读您的问题,我不确定我是否理解...您希望生成的图像是什么样的?
标签: python numpy matplotlib