[OpenCV] À propos du tableau retourné par imread

1. Origines

Lorsque j'écrivais un programme pour reconnaître un visage en utilisant l'apprentissage profond, je devais préparer une image ne montrant que le visage. En guise de méthode, un visage a été détecté à partir d'une image montrant une personne et cette partie a été découpée. À ce moment-là, il a été coupé en utilisant le tableau retourné par la méthode imread d'OpenCV. Cet article décrit les séquences renvoyées par imread.

2. Qu'est-ce que je lis

C'est une fonction qui peut lire une image à partir d'un fichier en spécifiant l'image à lire dans l'argument, tel que image = imread ('sample.jpg'). À ce moment, la valeur de pixel (valeur RVB) de chaque pixel de sample.jpg est stockée dans l'image par imread. En fait, exécutez le programme suivant et vérifiez-le.

imread_test.py


import cv2

#Charger l'image
image = cv2.imread('sample.jpg')

#Sortie du tableau retourné par imread
print(image)
	
#Afficher l'image chargée
cv2.imshow('img',image)
cv2.waitKey(0)
cv2.destroyAllWindows()

La sortie est la suivante. 2020-02-16 (2).png De cette manière, on peut voir que le tableau tridimensionnel est sorti. Soit ce tableau un tableau A × B × 3D. A est le nombre de lignes de pixels, et B est le nombre de colonnes de pixels (les variables A et B sont utilisées car la taille de la matrice change en fonction de la taille de l'image à lire). 3 est la luminosité de RVB. Dans l'image ci-dessus, beaucoup de luminosité est alignée verticalement, mais c'est Ils sont disposés dans l'ordre de [[[Luminosité de la 0ème ligne et de la 0ème colonne] ~ [Luminosité de la 0ème ligne et de la Bème colonne]] ~ [[Luminosité de la ligne A et de la 0ème colonne] ~ [Luminosité de la ligne A et Bème colonne]]] .. (Dans l'image, la 0ème ligne et la 0ème colonne sont en haut à gauche) Par conséquent, le tableau renvoyé par imread stocke la luminosité des pixels dans l'ordre de la matrice.

3. A part (comment couper l'image)

En arrière-plan du chapitre 1, comme expliqué, l'image du visage a été découpée à l'aide du tableau renvoyé par imread. Tout d'abord, la position supérieure gauche et la position inférieure droite de l'image de visage détectée sont acquises. Ensuite, il était possible de découper en extrayant uniquement la partie de l'image du visage (luminosité de la matrice de division de la matrice supérieure gauche de l'image du visage vers la matrice inférieure droite) du tableau renvoyé par imread. J'expliquerai les détails dans un autre article.

Recommended Posts

[OpenCV] À propos du tableau retourné par imread
Linux: corriger l'adresse renvoyée par malloc
Vérifiez le fonctionnement d'OpenCV3 installé par Anaconda
À propos du test
Trier les éléments d'un tableau en spécifiant des conditions
À propos de la file d'attente
La sortie du fichier avi par OpenCV ne peut pas être lue
Optical Flow, l'image dynamique capturée par OpenCV
Lire la documentation OpenCV
Résumé sur Python3 + OpenCV3
À propos de la fonction Déplier
À propos de la commande de service
À propos de la matrice de confusion
À propos du modèle de visiteur
Expliquez la séquence associative
À propos du numéro (numéro de section) entre () affiché par la commande man Linux