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]]".
Beispielsweise möchten Sie 1 nur für den G-Kanal festlegen
img[:, :, 1] = 1
Wird besorgt.
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.
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.
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.)
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