У меня есть 10 изображений RGB, и я рассчитал гистограммы отдельных каналов. Я хочу нанести изображения и их гистограммы RGB на сетку 10 x 2, где 0-й столбец представляет все изображения, а 1-й столбец представляет соответствующие гистограммы (R, G, B). Что-то вроде этого:
Гистограмма

image_source: https://lmcaraig.com/image-histograms-histograms-equalization-and-histograms-comparison/#2dhistogram
Я проверил несколько вариантов в Интернете, но все еще чувствую, что что-то упустил. Моя путаница проистекает из непонимания полного поведения plt.plot против plt.imshow.
Я использую matplotlib и opencv
Я уже пробовал несколько вариантов. Вот мой код
from matplotlib import pyplot as plt
w=10
h=10
fig=plt.figure(figsize=(8, 8))
columns = 2
rows = 10
color = ('r', 'g', 'b')
for ii in range(1, rows +1):
fig.add_subplot(rows, columns, ii)
img = bad_images_numpy[ii+400,:,:,:] #bad_images_numpy shape-> (4064,64,64,3)
plt.imshow(img)
fig.add_subplot(rows, columns, ii+1)
for i,col in enumerate(color):
histr = cv2.calcHist([img],[i],None,[256],[0,256])
plt.plot(histr,color = col)
plt.xlim([0,256])
plt.show()
В настоящее время мои изображения и гистограммы накладываются друг на друга, и я не могу понять, как их эффективно построить