【问题标题】:matplotlib's pcolormesh throws ValueError: too many values to unpackmatplotlib 的 pcolormesh 抛出 ValueError: too many values to unpack
【发布时间】:2014-03-31 04:24:15
【问题描述】:

我想使用pcolormesh 显示一张图片,但我不太明白这应该如何工作。我有某种颜色的 X 和对应的 Y,但是如果我在 pcolormesh 中输入一个普通数组作为 C,我会收到错误。

我的代码:

# load image
img = cv2.imread('Distorted_resized_50.jpg')
img_array = np.asarray(img)
height, width, channels = img.shape
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# create vector matrix
U, V = np.meshgrid(range(gray_img.shape[1]),
                   range(gray_img.shape[0]))
UV = np.vstack((U.flatten(),
                V.flatten())).T

H, mask = cv2.findHomography(UV_cp, XYZ_gcp)
UV_warped = cv2.perspectiveTransform(np.array([UV]).astype(np.float32), H)
UV_warped = UV_warped[0]
UV_warped = UV_warped.astype(np.int)
X_warped = UV_warped[:,0].reshape((height, width))
Y_warped = UV_warped[:,1].reshape((height, width))

fig, axs = plt.subplots(figsize=(15,10))
axs.pcolormesh(X_warped, Y_warped, img_array)

有谁可以帮助我?网站上的解释对我来说不是很清楚。 在fig, axs = plt.subplots(figsize=(15,10))

之前一切正常

追溯:

Traceback (most recent call last):
  File "C:\Users\Yorian\Desktop\TU\Stage Shore\python_files\Rectificatie dmv foto thuis\rectify.py", line 53, in <module>
    ax.pcolormesh(X_warped, Y_warped, img_array)
  File "C:\Python27\lib\site-packages\matplotlib\axes.py", line 7734, in pcolormesh
X, Y, C = self._pcolorargs('pcolormesh', *args, allmatch=allmatch)
  File "C:\Python27\lib\site-packages\matplotlib\axes.py", line 7350, in _pcolorargs
numRows, numCols = C.shape
ValueError: too many values to unpack

【问题讨论】:

  • 你能把这个简化为一个最小的例子吗?这个例子应该可以用 3 或 4 行来演示。
  • 缩短了,无法达到 3/4 行。但它的大小只有一半
  • 能否也包括完整的回溯?
  • 能否包含X_warped.shapeY_warped.shapeimg_array.shape
  • 啊,pcolor 不能像这样直接进行颜色映射。改用 imshow (范围为 kwarg)。见github.com/matplotlib/matplotlib/issues/1317

标签: python matplotlib valueerror


【解决方案1】:

我最近遇到了一个类似的问题,我不知道更多,我猜问题是你有一个 xdim,ydim x 3 数组,plt.pcolormesh 需要一个二维数组,其中你有值对于 r、g 和 b(介于 0 和 255 之间)。

话虽如此,你可以做一些事情:

将图像显示为灰度首先通过转换图像 skimage.color.rgb2grey(image) 并使用 pcolormesh 和 cmap='binary' 绘图

或 使用plt.imshow 绘图并使用kwarg=extent,如本文中所建议的那样 Matplotlib: how to make imshow read x,y coordinates from other numpy arrays?

【讨论】:

    猜你喜欢
    • 2019-09-11
    • 1970-01-01
    • 2019-02-01
    • 1970-01-01
    • 2019-01-19
    • 2020-09-23
    • 2016-11-05
    • 1970-01-01
    • 2020-04-01
    相关资源
    最近更新 更多