在同一窗口中但在不同图中绘制两个直方图

时间:2018-10-10 09:27:07

标签: python numpy opencv

我想在不同的图中绘制两个不同的直方图,但在同一窗口中打开。通过以下代码,我在同一图中获得了两个直方图。我无法获得带有子图的直方图,不知道我哪里出错了。

from matplotlib import pyplot as plt

    img = cv2.imread(f)
    img1 = cv2.imread('compressed_' + f)
    color = ('b', 'g', 'r')
    for i, col in enumerate(color):
        histr = cv2.calcHist([img], [i], None, [256], [0, 256])
        hist = cv2.calcHist([img1], [i], None, [256], [0, 256])
        plt.plot(histr, color=col)
        plt.plot(hist, color=col)
        plt.xlim([0, 256])
        plt.title('Original image')
    plt.show()

1 个答案:

答案 0 :(得分:0)

听起来您想要创建两个子图。为此,您应该使用matplotlib中的subplots函数。

您的代码应如下所示:

from matplotlib import pyplot as plt
import cv2

img = cv2.imread(f)
img1 = cv2.imread('compressed_' + f)
color = ('b', 'g', 'r')

fig, ax = plt.subplots(2,1)

for i, col in enumerate(color):
    histr = cv2.calcHist([img], [i], None, [256], [0, 256])
    hist = cv2.calcHist([img1], [i], None, [256], [0, 256])
    ax[0].plot(histr, color=col)
    ax[1].plot(hist, color=col)
    plt.xlim([0, 256])
    plt.title('Original image')
plt.show()