[..., :: -1]
: cry:BGR -> RGB
Il semble que cv2 la traite par défaut comme une image BGR, il est nécessaire de la trier en RVB lors de son enregistrement ou de son affichage avec matplotlib.
(H, W, C).
[:,:, :: -1]
permute les éléments de la dimension C (canal).
https://stackoverflow.com/questions/4661557/pil-rotate-image-colors-bgr-rgb
:
Est slice ((début, fin, étape)
) et pointe vers tous les éléments de cette dimension. (Aucun, Aucun, 1)
(?) Ou (0, n-1, 1)
équivalent.
:: -1
est également une tranche, et (0, n-1, -1)
va un par un de la fin au début.
Dans le cas de RVB (3 éléments), c'est l'indexation de «[2, 1, 0]».
Par conséquent, il peut être trié comme BGR-> RVB.
...
ʻImg [..., :: -1] `cas. D'un débutant, c'est trop mystérieux pour être compris.
...
a une faible capacité de recherche et est difficile.
https://www.scivision.dev/numpy-image-bgr-to-rgb/
C'était une abréviation pour ...
= :,:
. Est-ce comme sélectionner tous les éléments dans chaque dimension?
C'est comme [..., :: -1]
= [:,:, :: -1]
= [:,:, [2, 1, 0]]
.
Par exemple, vous souhaitez définir 1 uniquement pour le canal G
img[:, :, 1] = 1
ça ira.
Peut-être que stupide.
Lorsque vous avez des images rgb (3 canaux) et alpha (1 canal), vous ne pouvez pas simplement multiplier par rgb * alpha
.
Vous devez diffuser (dupliquer) la valeur de l'alpha en RVB.
Si vous spécifiez None
comme fg * alpha [:,:, None]
, il sera diffusé.
https://stackoverflow.com/questions/51091560/numpy-indexing-using-none-for-pairwise-operations
Le comportement consiste à augmenter la dimension de un car None = np.newaxis (difficile à comprendre ...)
Il semble que ast (arbre syntaxique) soit correctement considéré,
Quelque chose comme bg * (1 --alpha [:,:, None])
puis RVB et la multiplication fonctionnent bien aussi.
for i in range(len(pixels)):
pixels[i] = pixels[i] < 0.5 ? 0 : pixels[i]
Je veux fonctionner comme ça.
pixels[pixels < 0.5] = 0
Ensuite, il traitera avec tous les pixels.
D'autres ndarrays peuvent être utilisés tant qu'ils ont une forme (taille d'image et nombre de canaux).
e.g.
alpha[trimap_np[:, :, 0] == 1] = 0
Dans l'image alpha, définissez la valeur de la position du pixel où le canal R de trimap_np est de 1 à 0.
fg[alpha == 1] = image_np[alpha == 1]
T.B.W.
Dans la notation de tranche, vous pouvez spécifier tous les 4 pixels avec step, mais vous ne pouvez pas spécifier tous les 4 pixels, vous pouvez donc spécifier le début, la fin avec la diapositive (début, fin, 1)
dans l'instruction for etc., ou numpy , Utilisez une fonction qui se divise en sous-régions autour de cv2.
(À propos, numpy.tile est une fonction qui répète et arrange les images en forme de tuile, donc elle ne peut pas être utilisée pour la division)
Des articles qui expliquent visuellement
Numpy’s indexing and slicing notation explained visually https://medium.com/@buch.willi/numpys-indexing-and-slicing-notation-explained-visually-67dc981c22c1