Python n 2-D阵列的绘图平均值

Python n 2-D阵列的绘图平均值,python,numpy,opencv,matplotlib,computer-vision,Python,Numpy,Opencv,Matplotlib,Computer Vision,我试图计算一个文件夹中几个图像的直方图的平均值,并将其可视化。这是我正在尝试的方法。我将使用open cv,cv2.calcHist()函数计算每个图像的直方图,该函数返回numpy.ndarray。我将循环遍历目录中的每个图像,并将生成的数组附加到一个空列表中,将列表传递到numpy.mean()中,然后绘制它,所有操作都使用以下代码: import os import matplotlib.pyplot as plt import numpy as np import cv2 img_li

我试图计算一个文件夹中几个图像的直方图的平均值,并将其可视化。这是我正在尝试的方法。我将使用open cv,cv2.calcHist()函数计算每个图像的直方图,该函数返回numpy.ndarray。我将循环遍历目录中的每个图像,并将生成的数组附加到一个空列表中,将列表传递到numpy.mean()中,然后绘制它,所有操作都使用以下代码:

import os
import matplotlib.pyplot as plt
import numpy as np
import cv2

img_list = os.listdir(r'\image_directory')

dir_path = r'\path'

list_arr = [] #array list
for file in img_list:
    img = os.path.join(dir_path, file)
    plot=plt.imread(img)
    hist=cv2.calcHist([plot],[0],None,[256],[0,256])
    list_arr.append(hist)
计算平均值:

mean_hist = np.mean([list_arr],axis=0)

mean_hist.shape
输出:(154256,1)

绘图:

plt.plot(mean_hist)
我得到这个错误:

ValueError:x和y不能大于二维,但具有形状(154,)和(154,256,1)

154是目录中的图像数,256是任何给定图像的像素强度值的最大范围

但是,当我将hist数组单独传递到np.mean()中,而不是一次全部传递到列表中时,它就起作用了

代码:

这种情况下的输出:(256,1)

当我这样做时,它会毫无问题地绘制图形:

plt.plot(mean_hist)
如何在for循环中执行此操作而不出现上述错误?

而不是

mean_hist = np.mean([list_arr],axis=0)
干脆

mean_hist = np.mean(list_arr, axis=0)

哇,那很容易。
mean_hist = np.mean(list_arr, axis=0)