简体   繁体   中英

How to convert numpy matrix to cv2 image [python]

I have a numpy 2d matrix which represents a colored image. This matrix has some negative and floating point numbers but of course I can display the image using imshow(my_matrix).

my_matrix_screenshot

I need to perform histogram equalization to this colored image so I found a code here in stackoverflow using cv2 ( OpenCV Python equalizeHist colored image ) but the problem is I am unable to convert the 2d matrix to cv matrix which takes three channels for RGB.

I was searching again but all I found is to convert regular 3d numpy matrix to cv2 matrix so how can numpy 2d matrix be converted to cv2 matrix which has 3 channels?

because the numpy.ndarray is the base of cv2, so you just write the code as usual,like

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

you can try

It is better to stack the existing numpy array one above the other of its own copy than to reshape it and add the third axis. Check this 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()

You will get a gray colored image.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM