Dieses Mal werde ich ein Verlaufsbild mit Python erstellen, indem ich auf [diesen Artikel] verweise (https://note.nkmk.me/python-numpy-generate-gradation-image/).
Dieses Mal werden wir ein Bild mit zwei Funktionen erzeugen.
gradation_2d_color
def gradation_2d_color(start, stop, size, is_horizontal):
if is_horizontal:
return np.tile(np.linspace(start, stop, size[1]), (size[0], 1))
else:
return np.tile(np.linspace(start, stop, size[0]), (size[1], 1)).T
Erstellen Sie mit np.linspace ein eindimensionales Array mit Längenhöhe (oder Breite), in dem die Werte der Gleichheitsnummernfolge gespeichert werden, die durch Teilen des Bereichs von Anfang bis Ende durch die Anzahl der Höhe (oder Breite) erhalten wird, und erstellen Sie diese mit np.tile. Erstellt ein zweidimensionales Array mit der Länge, Breite (oder Höhe), das dupliziert und anhand der Anzahl der Breite (oder Höhe) gespeichert wird. ・ Start: Start des Pixelwerts ・ Stopp: Pixelwert beenden ・ Größe: Bildgröße [Höhe, Breite] ・ Is_horizontal: Richtig → Horizontale Gradationsänderung / Falsch → Vertikale Gradationsänderung
gradation_3d_img
def gradation_3d_img(start_list, stop_list, size, is_horizontal_list):
result = np.zeros((size[0], size[1], len(start_list)), dtype=np.float)
for i, (start, stop, is_horizontal) in enumerate(zip(start_list, stop_list, is_horizontal_list)):
result[:, :, i] = gradation_2d_color(start, stop, size, is_horizontal)
return result
Übergeben Sie die Liste für jeden RGB. Das erste Element ist die r-Komponente, das zweite Element ist die g-Komponente und das dritte Element ist die b-Komponente. -Start_list: Liste der Startpixelwerte -Stop_list: Liste der Endpixelwerte ・ Größe: Liste der Bildgrößen ・ Is_horizontal_list: Liste der Änderungsrichtungen
Verwenden Sie diese Funktionen, um ein Verlaufsbild zu erstellen.
main
size = [400,500] #height, width
#Horizontal schwarz → weiß
img = gradation_3d_img([0,0,0], [255,255,255], size, [True,True,True])
img = img.astype(np.uint8)
img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
cv2.imwrite('out.png', img)
Ich habe andere Parameter mit verschiedenen Werten ausprobiert, wobei die Bildgröße auf (400.500) eingestellt war.
rgb (0,0,0)
→ rgb (255,255,255)
rgb (0,0,0)
→ rgb (255,255,255)
rgb (0,255,255)
→ rgb (255,255,255)
rgb (255,0,0)
→ rgb (0,255,255)
rgb (0,0,0)
→ rgb (255,255,255)
rgb (0,0,0)
→ rgb (255,255,255)
Diese Abstufung wird mit np.linspace ausgedrückt, das eine Gleichheitssequenz erzeugt. Ich denke, dass Sie die Abstufung in dem Sinne ausdrücken können, dass sich der numerische Wert kontinuierlich ändert. Es hat sich jedoch eine andere Frage ergeben, dass die Gradationsänderung numerisch ausgedrückt werden kann. Nächstes Mal werde ich darüber schreiben.
Recommended Posts