Dies ist eine Verbesserung der Antwort von AkiRoss. Dies bietet mehr Flexibilität bei der Anzeige und vermeidet das Wiederholen der Funktion für jede Zeile durch Anzeige in einem Rasterformat.
import matplotlib.pyplot as plt
def grid_display(list_of_images, list_of_titles=[], no_of_columns=2, figsize=(10,10)):
fig = plt.figure(figsize=figsize)
column = 0
for i in range(len(list_of_images)):
column += 1
# check for end of column and create a new figure
if column == no_of_columns+1:
fig = plt.figure(figsize=figsize)
column = 1
fig.add_subplot(1, no_of_columns, column)
plt.imshow(list_of_images[i])
plt.axis('off')
if len(list_of_titles) >= len(list_of_images):
plt.title(list_of_titles[i])
Parameter:
list_of_images
- eine Liste, die alle Bilder, die Sie anzeigen möchten.
list_of_titles
- eine Liste mit allen Titeln des Bildes in der gleichen Reihenfolge.
no_of_columns
- Anzahl der Spalten im Raster.
figsize
- die Größe jeder Reihe, um Quetschen zu verhindern. (horizontal_size, vertical_size)
.
Beispiel:
import cv2
import matplotlib.pyplot as plt
img = cv2.imread("files/tiger_monkey.jpg")
grey_img = cv2.imread("files/tiger_monkey_grey.png")
img_b, img_g, img_r = cv2.split(img)
grey_img_b, grey_img_g, grey_img_r = cv2.split(grey_img)
combi_one = cv2.merge((img_b, grey_img_g, img_r))
combi_two = cv2.merge((grey_img_b, grey_img_g, img_r))
combi_three = cv2.merge((img_b, img_g, grey_img_r))
combi_four = cv2.merge((grey_img_b, img_g, img_r))
combi_five = cv2.merge((grey_img_b, img_g, grey_img_r))
combi_six = cv2.merge((img_b, grey_img_g, grey_img_r))
titles = ["combi_one",
"combi_two",
"combi_three",
"combi_four",
"combi_five",
"combi_six"]
images = [combi_one,
combi_two,
combi_three,
combi_four,
combi_five,
combi_six]
images = [cv2.cvtColor(image, cv2.COLOR_BGR2RGB) for image in images]
grid_display(images, titles, 3, (10,10))
Originalbilder:
Vielleicht sollten Sie hinzufügen, wo HTML herkommt. Nach einigem googeln denke ich, dass Sie entweder auf dieses [html Modul] (https://pypi.python.org/pypi/html) oder auf [HTML.py] (http://www.decalage.info/en/python) verweisen/html). Das erste gibt mir einen Fehler, wenn ich versuche, unter python3.6 zu installieren, und das letztere ist zu exotisch für mich (d. H. Nicht auf Pipy). – Toby
Ahh, und jetzt habe ich gefunden, was Sie eigentlich bezogen: 'von IPython.core.display HTML importieren – Toby
@Toby Sie haben Recht, habe es nicht bemerkt. Fest. – AkiRoss