Comment convertir numpy matrice à cv2 image [python]
J'ai un numpy 2d matrice qui représente une image couleur en image. Cette matrice a quelques négatifs et les nombres à virgule flottante, mais bien sûr, je peux afficher l'image avec imshow(my_matrix).
J'ai besoin d'effectuer une égalisation d'histogramme de cette image colorée j'ai donc trouvé un code ici dans stackoverflow à l'aide de cv2 (OpenCV Python equalizeHist de couleur de l'image) mais le problème est que je suis incapable de convertir la matrice 2d de cv matrice qui prend trois canaux pour le RVB.
J'étais à la recherche de nouveau, mais tout ce que je trouve est de convertir un 3d numpy matrice à cv2 matrice alors, comment pouvez-numpy matrice 2d être converti à cv2 matrice qui dispose de 3 canaux?
- Qu'est-ce que la sortie de
my_matrix.shape
? - La sortie est (90, 100)
- "J'ai un numpy 2d matrice qui représente une image couleur en image" Si vous savez que la forme originale de cette image en couleur, vous pouvez utiliser
np.reshape()
afin de le convertir à un tableau 3D new_img = np.reshape(img,(rows,cols/3,3)
- Il donne une erreur: ValueError: impossible de remodeler tableau de taille 9000 en forme (90,33,3) dans cette ligne: new_img = np.remodeler(new_img_tmp,(int(new_img_tmp.de la forme[0]), int(new_img_tmp.forme[1]/3),3))
Vous devez vous connecter pour publier un commentaire.
parce que le numpy.ndarray est la base de cv2, de sorte que vous venez d'écrire le code comme d'habitude,comme
vous pouvez essayer
Il est préférable de pile de l'existant tableau numpy l'un au dessus de l'autre de sa propre copie de remodeler et d'y ajouter un troisième axe.
Vérifier ce code:
Vous obtiendrez un gris de l'image couleur.
np.random.rand
ligne lors de l'exécution. Vous devez remplacer cette ligne avec votre existant déjà 90x100 tableau numpy. J'ai généré un ensemble aléatoire juste pour la complétion de code souci.