Ich denke diesmal daran, einen Film zu erstellen, der den Farbton des gesamten Bildes ändert, das an einer Kamera angebracht ist. Wenn Sie das Numpy-Modul verwenden, können Sie problemlos einen Film mit 3 Primärfarben erstellen. Ich habe jedoch darüber nachgedacht, die Vielseitigkeit zu erhöhen und ihn mit allen Farben kompatibel zu machen.
from PIL import Image
import numpy as np
def color_filter(img_source, rgb):
#In ein reales Array konvertieren
img_source=np.array(img_source, dtype='float16')
#Film RGB ist 0~255
if max(rgb)>255 or min(rgb)<0:
return Image.fromarray(np.unit8(img_source))
#RGB-Film auftragen
img_source[:,:,0]*=rgb[0]/255
img_source[:,:,1]*=rgb[1]/255
img_source[:,:,2]*=rgb[2]/255
#Ausgabe nach Konvertierung in Bildklasse
img_out=Image.fromarray(np.uint8(img_source))
return img_out
Der RGB-Wert jedes Pixels wird mit dem Verhältnis des RGB des Films zu 255 (maximaler RGB-Wert) multipliziert. Der Farbbereich kann vom Originalbild in pechschwarz geändert werden. Der Punkt ist, dass der Film, wenn er pechschwarz ist, eine Wand ist.
Filmfarbe: RGB (100.255.100) Filmfarbe: RGB (173,216, 230)
Zuerst dachte ich, dass es möglich wäre, den Durchschnitt mit dem Filterwert anstelle des Verhältnisses zu nehmen, also werde ich auch das Ergebnis veröffentlichen. Da die Wand nicht reproduziert werden konnte, ist dies ein Fehler.
from PIL import Image
import numpy as np
def color_filter2(img_source, rgb):
img_source=np.array(img_source, dtype="float16")
#Film RGB ist 0~255
if max(rgb)>255 or min(rgb)<0:
return Image.fromarray(np.unit8(img_source))
#RGB-Film auftragen
img_source[:,:,0]+=rgb[0]
img_source[:,:,0]/=2.0
img_source[:,:,1]+=rgb[1]
img_source[:,:,1]/=2.0
img_source[:,:,2]+=rgb[2]
img_source[:,:,2]/=2.0
#Ausgabe nach Konvertierung in Bildklasse
return Image.fromarray(np.uint8(img_source))
Filmfarbe: RGB (100.255.100) Filmfarbe: RGB (173,216, 230) Wand: RGB (0,0,0) Immerhin ist es insgesamt weißlich.
Ich denke, es gibt Nachfrage nach beidem, also probieren Sie bitte verschiedene Dinge aus. Ich hoffe, Sie können damit Bilderkennungsdaten aufblasen. (Ergänzung) Aus irgendeinem Grund habe ich den Code eingefügt, als ich die Slice-Notation vergessen habe ... Die, die ich gerade einfüge, ist leichter.
Recommended Posts