Python matplotlib';s pcolormesh抛出值错误:值太多,无法解包

Python matplotlib';s pcolormesh抛出值错误:值太多,无法解包,python,matplotlib,valueerror,Python,Matplotlib,Valueerror,我想用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.

我想用
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.subplot(figsize=(15,10))

回溯:

回溯(最近一次呼叫最后一次):
文件“C:\Users\Yorian\Desktop\TU\Stage Shore\python\u files\Rectificatie dmv foto thuis\rective.py”,第53行,在
ax.pcolormesh(X_扭曲、Y_扭曲、img_数组)
pcolormesh中的文件“C:\Python27\lib\site packages\matplotlib\axes.py”,第7734行
十、 Y,C=self.\u pcolorargs('pcolormesh',*args,allmatch=allmatch)
文件“C:\Python27\lib\site packages\matplotlib\axes.py”,第7350行,在_pcolorargs中
numRows,numCols=C.shape
ValueError:要解压缩的值太多

我最近遇到了一个类似的问题,在不知道更多的情况下,我猜测问题在于您有一个xdim,由ydim乘以3数组,
plt。pcolormesh
需要一个标量值的2d数组,其中有r、g和b的值(介于0和255之间)

话虽如此,您可以做几件事:

将图像显示为灰度,首先通过
skimage.color.rgb2grey(图像)
并使用pcolormesh和
cmap='binary'打印

或 使用
plt.imshow
绘图,并使用本文建议的
kwarg=extent

您能将此简化为一个最小的示例吗?这个例子应该在3行或4行中显示出来。缩短它,不能使它达到3/4行。但是它是大小的一半你还可以包括完整的回溯吗?你可以包括
X\u扭曲的.shape
Y\u扭曲的.shape
,和
img\u数组.shape
?啊,
pcolor
不能像这样直接进行颜色映射。改用imshow(带扩展kwarg)。看见