Versuchen Sie, Farbfilme mit Python zu reproduzieren

Was du machen willst

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.

Das Originalbild

sample.jpg

Fertiges Produkt

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

Wie es funktioniert

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.

Ausführungsergebnis

Filmfarbe: RGB (100.255.100) sample_out2.jpg Filmfarbe: RGB (173,216, 230) sample_out2-2.jpg

Fehlerarbeit

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))

Ausführungsergebnis

Filmfarbe: RGB (100.255.100) sample_out2-1.jpg Filmfarbe: RGB (173,216, 230) sample_out2-2.jpg Wand: RGB (0,0,0) sample_out2-3.jpg Immerhin ist es insgesamt weißlich.

Zusammenfassung

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

Versuchen Sie, Farbfilme mit Python zu reproduzieren
Versuchen Sie, Facebook mit Python zu betreiben
Versuchen Sie, sich mit Python bei qiita anzumelden
Geben Sie Farbzeichen mit Python zu hübsch aus
Versuchen Sie es mit Python.
Versuchen Sie, das Mensch-Maschine-Diagramm mit Python zu lösen
Versuchen Sie, mit Python eine Lebenskurve zu zeichnen
Versuchen Sie, in Python einen "Entschlüsselungs" -Code zu erstellen
Versuchen Sie, Python-Dokumente automatisch mit Sphinx zu generieren
Versuchen Sie, mit Python eine Diedergruppe zu bilden
Versuchen Sie, Fische mit Python + OpenCV2.4 (unvollendet) zu erkennen.
Versuchen Sie, den Boden durch Rekursion herauszufordern
Stellen Sie mit Python eine Verbindung zu BigQuery her
Versuchen Sie, das Programmier-Herausforderungsbuch mit Python3 zu lösen
Reproduzieren Sie LightGBM Objective mit Python
Lassen Sie uns ein Befehls-Standby-Tool mit Python erstellen
Versuchen Sie, Python selbst zu verstehen
Versuchen Sie, das Problem der Zuweisung von Schulungsärzten mit Python zu lösen
Probieren Sie die Python-Ausgabe mit Haxe 3.2 aus
Stellen Sie mit Python eine Verbindung zu Wikipedia her
Post to Slack mit Python 3
Probieren Sie die DB-Operation mit Python aus und visualisieren Sie sie mit d3
Versuchen Sie, Python mit Try Jupyter auszuführen
Schalten Sie Python mit Alternativen auf 2.7 um
Schreiben Sie mit Python in csv
Versuchen Sie die Gesichtserkennung mit Python
Versuchen Sie, verschiedene Informationen anzuzeigen, die für das Debuggen mit Python nützlich sind
[AWS] Versuchen Sie, die Python-Bibliothek mit SAM + Lambda (Python) zur Ebene hinzuzufügen.
Versuchen Sie, ein Unterfenster mit PyQt5 und Python zu öffnen
Versuchen Sie, den Betrieb von Netzwerkgeräten mit Python zu automatisieren
Es ist Halloween, also werde ich versuchen, es mit Python zu verstecken
Versuchen Sie, die verstümmelten Zeichen im angehängten Dateinamen mit Python zu entschlüsseln
Versuchen Sie es mit Python + Beautiful Soup
Python: So verwenden Sie Async mit
Link, um mit Python zu beginnen
[Python] Mit Python in eine CSV-Datei schreiben
Schön dich mit Python zu treffen
Versuchen Sie die Singularwertzerlegung mit Python
Ausgabe in eine CSV-Datei mit Python
Versuchen Sie, sich mit ONNX Runtime zu profilieren
Konvertieren Sie die Liste mit Python in DataFrame
MP3 → WAV-Konvertierung mit Python
Schwanzrekursion mit Python2 durchführen
Versuchen Sie, Trace in Python zu berechnen
Erste Schritte mit Python
Versuchen Sie, die cloudmonkey-CLI in python3 -1 zu konvertieren
Was tun mit PYTHON Release?
Versuchen Sie die Gesichtserkennung mit Python + OpenCV
So berechnen Sie das Datum mit Python
Versuchen Sie die Frequenzsteuerungssimulation mit Python
Mit Python 3 einfach auf Twitter posten
Versuchen Sie, Audio mit M5 STACK auszugeben
Ich möchte mit Python debuggen
Personen, die mit Android-Programmen vertraut sind, versuchen die Multithread-Verarbeitung mit Python
Versuchen Sie Python
Versuchen Sie, eine Python-Umgebung mit Visual Studio Code & WSL zu erstellen