OpenCV verwendet die BGR-Codierung und img[...,::-1]
vertauscht die roten und blauen Achsen von img
, wenn ein Bild im häufigeren RGB-Format vorliegen muss. Ich benutze es seit einigen Monaten und verstehe immer noch nicht, wie es funktioniert.Wie funktioniert [..., :: - 1] in Slice-Notation?
Antwort
Der Slice-Operator arbeitet wie mit 3 Parametern. Start (inklusive), Ende (exklusiv) und Schritt. Wenn Start nicht angegeben ist, erhält es den Anfang des Arrays, gleich mit dem Ende aber mit dem letzten Element. Wenn der Schritt den Standard keine Angabe 1. ist
diese Weise, wenn Sie [1, 2, 3, 4][0:2]
tun es [1, 2]
zurückkehren Wenn Sie [1, 2, 3, 4][1:]
tun es [2, 3, 4]
zurückkehren Wenn Sie [1, 2, 3, 4][1::2]
tun es [2, 4]
Für negative Indizes bedeutet das Iterieren rückwärts, so dass [1, 2, 3, 4][::-1]
sagt, vom Startelement bis zum letzten Element die Liste 1 Element nacheinander durchlaufen,zurückgeben.
Da die Frage nicht ganz klar ist, hoffe ich, dass dies die Funktionsweise aufhebt und Sie zu einer Antwort bringt.
img[...,::-1]
die Reihenfolge der 3 R umkehrt, G, B-Komponenten des Bildes
hier ist ein numerisches Beispiel
import numpy as np
#define 2x2x3 matrix with random numbers
A = np.random.randint(0,10,(2,2,3))
print(A)
#output
array([[[0, 1, 7],
[9, 6, 6]],
[[8, 2, 2],
[7, 9, 4]]])
#print the third 2x2 component of A (corresponding to B in RGB)
print(A[:,:,2]
#output is
array([[7, 6],
[2, 4]])
nun die dritte Dimension der Matrix Umkehren wird 0 (R) tauschen mit 2 (B) und halten 1 (G) unverändert
RA =A[:,:,::-1]
print(RA)
#output is
array([[[7, 1, 0],
[6, 6, 9]],
[[2, 2, 8],
[4, 9, 7]]])
#here is the first
print(RA[:,:,0])
#output is as expected the same as A[:,:,2], i.e. R and B were swapped
array([[7, 6],
[2, 4]])
PS. [:,:,1]
ist die gleiche wie [...,1]
- 1. bash for i in {1 .. $ 1} funktioniert nicht wie erwartet
- 2. SELECT 1 = 1 funktioniert nicht
- 3. wie funktioniert es "$ _ & 1" in perl
- 4. Wie funktioniert 2 $ [1 ..] in Haskell?
- 5. Warum Rückgabe -1 nicht wie erwartet funktioniert
- 6. TypoScript 'stdWrap.required = 1' funktioniert nicht wie erwartet
- 7. AngularJs 1 funktioniert nicht
- 8. Warum funktioniert s [len (s) -1: -1: -1] nicht?
- 9. Ajax funktioniert nicht 1
- 10. Warum funktioniert [-1: -1: -1] nicht zum Umkehren einer Zeichenfolge?
- 11. stepUp (1), stepDown (1) funktioniert nicht in IE
- 12. AngularJS 1 Auswahlbox funktioniert nicht in OnsenUI
- 13. Tabindex -1 funktioniert nicht in Firefox
- 14. .toFixed (1) funktioniert nicht in 8.3333333333333334 Dezimalzahl
- 15. AutoFixture 2 Mit() funktioniert nicht wie in AutoFixture 1?
- 16. ls -1 funktioniert nicht wie in csh bestimmt
- 17. Wie funktioniert die Zahlenformatierung auf 1 Dezimalstelle in SSRS?
- 18. AngularJS 1 Routing nicht funktioniert
- 19. Euler 1, Code nicht funktioniert
- 20. Ressource 1 funktioniert, 2 nicht
- 21. So fügt Zahl wie 1 + 1 + 1 = 3 nicht "1" + "1" + "1" = 111 in Javascript
- 22. Wie funktioniert Funktion (1) (2) in Javascript? und wie funktioniert es?
- 23. 'posts_per_page' => -1 funktioniert nicht
- 24. GridView1.EditIndex = -1 funktioniert nicht
- 25. Warum ist keine Matrixzuweisung, z. p (1) = 1, funktioniert in Octave wie andere Programmiersprachen?
- 26. Pandas.DataFrame.sum (Achse = 1) funktioniert nicht
- 27. Wie 0111 als 0 + 1 + 1 + 1 = 3 in php
- 28. pragma pack (1) noch __attribute__ ((aligned (1))) funktioniert
- 29. Wie in Yü 1
- 30. Abfrage funktioniert in Hive 1.x aber nicht in Beeline
Mögliches Duplikat (https://stackoverflow.com/questions/34085912/reversing-a-list-slice-in-python) – DyZ
ziemlich sicher, dass opencv verwendet [eine Liste Scheibe in Python Umkehren] [numpy arrays] (https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#basic-slicing-and-indexing) für das Bild: die Ellipsen sind Abkürzungen für alle Achsen, die * passen * in diesem Kontext - und das ':: - 1' kehrt die Zeilen in einem 2-d-Array um. – wwii