Mémo de l'opération de position de pixel pour les données d'image avec Python (numpy, cv2)

Contexte

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]].

Je souhaite traiter uniquement un canal spécifique

Par exemple, vous souhaitez définir 1 uniquement pour le canal G

img[:, :, 1] = 1

ça ira.

Je souhaite diffuser de l'alpha vers RVB

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.

Juger et substituer des éléments de pixel, etc.

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.

Divisez l'image en sous-régions (tuiles)

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)

Autre

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

Recommended Posts

Mémo de l'opération de position de pixel pour les données d'image avec Python (numpy, cv2)
Vérifiez le fonctionnement de Python pour .NET dans chaque environnement
Manipulation des pixels d'image en Python
[Python] Mémo d'opération de pandas DataFrame
Résumé de diverses instructions for en Python
Structure et fonctionnement des données Python (mémo d'apprentissage Python ③)
Mémo pour l'envoi et la réception d'images avec Python (Flask)
Notes d'évaluation de la qualité d'image CG en Python
Comment envoyer une image visualisée des données créées en Python à Typetalk
Exemple d'opération d'objet Cloud Pak for Data en Python (client WML, project_lib)
[Python] Raison de dtype "int32" dans Numpy (environnement Windows) (à partir de septembre 2020)
Obtenez la clé pour la migration de la deuxième couche de données JSON avec python
Analyse des données en Python Résumé des sources que les débutants devraient d'abord consulter
Fonctionnement sans assistance des feuilles de calcul Google (etc.) en Python
[Python] Permutation des lignes et des colonnes de données Numpy
Visualisation en temps réel des données thermographiques AMG8833 en Python
Afficher la bougie de données FX (forex) en Python
Traitement d'image? L'histoire du démarrage de Python pour
L'histoire de la lecture des données HSPICE en Python
Code pour vérifier le fonctionnement de Python Matplot lib
Environnement enregistré pour l'analyse des données avec Python
[Python] Mémo Numpy
Histoire de base de l'héritage en Python (pour les débutants)
Un outil pour créer des images de masque pour ETC en Python
Résumé des outils nécessaires pour analyser les données en Python
Traitement pleine largeur et demi-largeur des données CSV en Python
Créez votre propre Big Data en Python pour validation
Liste des bibliothèques Python pour les data scientists et les data ingénieurs
Ne pas être conscient du contenu des données en python
Liste du code Python utilisé dans l'analyse de Big Data
Utilisons les données ouvertes de "Mamebus" en Python
Afficher un histogramme des valeurs de luminosité de l'image en python
Mémo de connexion SSH utilisant ProxyCommand de ssh_config en Python
Format d'image en Python
[Python] Tri des données Numpy
Mémo d'opération de décorateur Python
Résumé de base des opérations de données dans Python Pandas - Deuxième moitié: agrégation de données
[Mémo] Le mystère des instructions d'affectation cumulative dans les fonctions Python
Exemple d'image du serveur d'API Python pour EC2 (AMI publique)
[Pour les débutants] Résumé de l'entrée standard en Python (avec explication)
Application de Python: Nettoyage des données Partie 3: Utilisation d'OpenCV et prétraitement des données d'image
[Comprendre au plus court] Principes de base de Python pour l'analyse des données
Comment développer dans un environnement virtuel Python [Memo]
[Homologie] Comptez le nombre de trous dans les données avec Python
[Calcul scientifique / technique par Python] Fonctionnement de base du tableau, numpy
Résumé de la prise en charge des opérations de hachage (dictionnaire) pour Ruby et Python
Un mémo que j'ai écrit une fonction de base en Python en utilisant la récurrence
Comparaison de la gestion des trames de données en Python (pandas), R, Pig
J'ai écrit le fonctionnement de base de Numpy dans Jupyter Lab.
Google recherche la chaîne sur la dernière ligne du fichier en Python
Gérer les données ambiantes en Python
Mémo Python (pour moi): Array
Python pour l'analyse des données Chapitre 4
Afficher les données UTM-30LX en Python
Mémo de code personnel Python
Jugement d'équivalence d'objet en Python
Techniques de tri en Python