Notiz der Pixelpositionsoperation für Bilddaten mit Python (numpy, cv2)

Hintergrund

BGR -> RGB

Es scheint, dass cv2 es standardmäßig als BGR-Bild verarbeitet. Es ist erforderlich, es nach RGB zu sortieren, wenn es mit matplotlib gespeichert oder angezeigt wird.

(H, W, C).

[:,:, :: -1] vertauscht die Elemente der C-Dimension (Kanal).

https://stackoverflow.com/questions/4661557/pil-rotate-image-colors-bgr-rgb

: Ist Slice ((Start, Ende, Schritt)) und zeigt auf alle Elemente dieser Dimension. (Keine, Keine, 1) (?) Oder (0, n-1, 1) äquivalent.

:: -1 ist auch Slice und (0, n-1, -1) geht eins nach dem anderen von Ende zu Anfang.

Im Fall von RGB (3 Elemente) ist es die Indizierung von "[2, 1, 0]".

Daher kann es als BGR-> RGB sortiert werden.

...

Ein Fall von img [..., :: -1]. Von Anfang an ist es zu mysteriös, um es überhaupt zu verstehen.

... hat eine geringe Durchsuchbarkeit und ist schwer.

https://www.scivision.dev/numpy-image-bgr-to-rgb/

Es war eine Abkürzung für "..." = ":,:". Ist es so, als würde man alle Elemente in jeder Dimension auswählen?

Es ist wie "[..., :: -1]" = "[:,:, :: -1]" = "[:,:, [2, 1, 0]]".

Ich möchte nur einen bestimmten Kanal verarbeiten

Beispielsweise möchten Sie 1 nur für den G-Kanal festlegen

img[:, :, 1] = 1

Wird besorgt.

Ich möchte Alpha an RGB senden

Vielleicht nur numpy.

Wenn Sie Bilder von RGB (3 Kanäle) und Alpha (1 Kanal) haben, können Sie nicht einfach mit "RGB * Alpha" multiplizieren.

Sie müssen den Wert von Alpha an RGB senden (duplizieren).

Wenn Sie "None" als "fg * alpha [:,:, None]" angeben, wird es gesendet: Thinking:

https://stackoverflow.com/questions/51091560/numpy-indexing-using-none-for-pairwise-operations

Das Verhalten besteht darin, die Dimension um eins zu erhöhen, da None = np.newaxis (schwer zu verstehen ...)

Es scheint, dass ast (Syntaxbaum) richtig berücksichtigt wird,

Etwas wie bg * (1 --alpha [:,:, None]) und dann RGB und Multiplikation funktionieren auch gut.

Beurteilen und Ersetzen von Pixelelementen usw.

for i in range(len(pixels)):
   pixels[i] = pixels[i] < 0.5 ? 0 : pixels[i]

Ich möchte so arbeiten.

pixels[pixels < 0.5] = 0

Dann wird es mit allen Pixeln verarbeitet.

Andere ndarrays können verwendet werden, solange sie eine Form haben (Bildgröße und Anzahl der Kanäle).

e.g.

alpha[trimap_np[:, :, 0] == 1] = 0

Stellen Sie im Alpha-Bild den Wert der Pixelposition ein, an der der R-Kanal von trimap_np 1 bis 0 ist.

fg[alpha == 1] = image_np[alpha == 1]

T.B.W.

Teilen Sie das Bild in Unterregionen (Kacheln).

In der Slice-Notation können Sie alle 4 Pixel mit Schritt angeben, aber Sie können nicht alle 4 Pixel angeben, sodass Sie Start, Ende mit Folie (Start, Ende, 1) für Anweisung usw. oder Numpy angeben können , Verwenden Sie eine Funktion, die sich in Unterregionen um cv2 unterteilt. (Numpy.tile ist übrigens eine Funktion, die Bilder in einer Kachelform wiederholt und anordnet, sodass sie nicht zum Teilen verwendet werden können.)

Andere

Artikel, die visuell erklären

Numpy’s indexing and slicing notation explained visually https://medium.com/@buch.willi/numpys-indexing-and-slicing-notation-explained-visually-67dc981c22c1

Recommended Posts

Notiz der Pixelpositionsoperation für Bilddaten mit Python (numpy, cv2)
Überprüfen Sie die Funktionsweise von Python für .NET in jeder Umgebung
Bildpixel-Manipulation in Python
[Python] Operationsnotiz von Pandas DataFrame
Zusammenfassung verschiedener for-Anweisungen in Python
Struktur und Betrieb der Python-Daten (Python-Lernnotiz ③)
Memo zum Senden und Empfangen von Bildern mit Python (Flask)
Hinweise zur Bewertung der CG-Bildqualität in Python
So senden Sie ein visualisiertes Bild der in Python erstellten Daten an Typetalk
Beispiel für den Betrieb eines Cloud Pak for Data-Objekts in Python (WML-Client, project_lib)
[Python] Grund für den Typ "int32" in Numpy (Windows-Umgebung) (Stand September 2020)
Holen Sie sich den Schlüssel für die Migration von JSON-Daten auf der zweiten Ebene mit Python
Datenanalyse in Python Zusammenfassung der Quellen, die Anfänger zuerst betrachten sollten
Unbeaufsichtigter Betrieb von Google Spreadsheets (usw.) in Python
[Python] Vertauschen von Zeilen und Spalten mit Numpy-Daten
Echtzeitvisualisierung von Thermografie AMG8833-Daten in Python
Zeigen Sie FX (Forex) Daten Candle Stick in Python an
Bildverarbeitung? Die Geschichte, Python für zu starten
Die Geschichte des Lesens von HSPICE-Daten in Python
Code zum Überprüfen des Betriebs von Python Matplot lib
Aufgezeichnete Umgebung für die Datenanalyse mit Python
[Python] Numpy Memo
Grundlegende Geschichte der Vererbung in Python (für Anfänger)
Ein Tool zum Erstellen von Maskenbildern für ETC in Python
Zusammenfassung der Tools, die zum Analysieren von Daten in Python benötigt werden
Verarbeitung von CSV-Daten in voller und halber Breite in Python
Erstellen Sie Ihre eigenen Big Data in Python zur Validierung
Liste der Python-Bibliotheken für Datenwissenschaftler und Dateningenieure
Den Inhalt der Daten in Python nicht kennen
Liste des Python-Codes, der bei der Big-Data-Analyse verwendet wird
Verwenden wir die offenen Daten von "Mamebus" in Python
Zeigen Sie ein Histogramm der Bildhelligkeitswerte in Python an
Ssh-Verbindungsnotiz mit ProxyCommand von ssh_config in Python
Bildformat in Python
[Python] Numpy Daten sortieren
Python-Dekorator-Operationsnotiz
Grundlegende Zusammenfassung der Datenoperationen in Python Pandas - Zweite Hälfte: Datenaggregation
[Memo] Das Geheimnis kumulativer Zuweisungsanweisungen in Python-Funktionen
Beispielbild eines Python-API-Servers für EC2 (öffentliches AMI)
[Für Anfänger] Zusammenfassung der Standardeingabe in Python (mit Erklärung)
Anwendung von Python: Datenbereinigung Teil 3: Verwendung von OpenCV und Vorverarbeitung von Bilddaten
[In kürzester Zeit verstehen] Python-Grundlagen für die Datenanalyse
So entwickeln Sie in einer virtuellen Python-Umgebung [Memo]
[Homologie] Zählen Sie mit Python die Anzahl der Löcher in den Daten
[Wissenschaftlich-technische Berechnung von Python] Grundlegende Operation des Arrays, numpy
Zusammenfassung der Unterstützung von Hash-Operationen (Dictionary) für Ruby und Python
Ein Memo, dass ich eine Grundfunktion in Python mit Wiederholung geschrieben habe
Vergleich der Datenrahmenbehandlung in Python (Pandas), R, Pig
Ich habe die Grundoperation von Numpy im Jupyter Lab geschrieben.
Google sucht mit Python nach der Zeichenfolge in der letzten Zeile der Datei
Behandeln Sie Umgebungsdaten in Python
Python-Memo (für mich): Array
Python für die Datenanalyse Kapitel 4
Zeigen Sie UTM-30LX-Daten in Python an
Persönliches Python-Code-Memo
Objektäquivalenzbeurteilung in Python
Techniken zum Sortieren in Python