web-dev-qa-db-fra.com

Comment convertir une matrice numpy en image cv2 [python]

J'ai une matrice numpy 2d qui représente une image colorée. Cette matrice a des nombres négatifs et à virgule flottante mais bien sûr je peux afficher l'image en utilisant imshow (my_matrix).

my_matrix_screenshot

Je dois effectuer une égalisation d'histogramme sur cette image colorée, j'ai donc trouvé un code ici dans stackoverflow en utilisant cv2 ( OpenCV Python equalizeHist image colorée ) mais le problème est que je ne peux pas pour convertir la matrice 2d en matrice cv qui prend trois canaux pour RGB.

Je cherchais à nouveau mais tout ce que j'ai trouvé est de convertir la matrice numpy 3d régulière en matrice cv2 alors comment convertir la matrice numpy 2d en matrice cv2 qui a 3 canaux?

6
user2266175

parce que numpy.ndarray est la base de cv2, donc vous écrivez simplement le code comme d'habitude, comme

img_np = np.ones([100,100])
img_cv = cv2.resize(img_np,(200,200))

tu peux essayer

5
shouhuxianjian

Il est préférable d'empiler le tableau numpy existant l'un au-dessus de l'autre de sa propre copie plutôt que de le remodeler et d'ajouter le troisième axe. Vérifiez ce code:

import numpy as np
import matplotlib.pyplot as plt

a = np.random.Rand(90, 100) # Replace this line with your 90x100 numpy array.
a = np.expand_dims(a, axis = 2)
a = np.concatenate((a, a, a), axis = 2)
print(a.shape)
# (90, 100, 3)
plt.imshow(a)
plt.show()

Vous obtiendrez une image de couleur grise.

0
user1190882