如何将numpy矩阵转换为cv2图像[python]

use*_*175 6 python opencv numpy cv2

我有一个代表彩色图像的numpy 2d矩阵。这个矩阵有一些负数和浮点数,但是我当然可以使用imshow(my_matrix)显示图像。

my_matrix_screenshot

我需要对该彩色图像执行直方图均衡化,因此我在这里使用cv2(OpenCV Python equalizeHist彩色图像)在stackoverflow中找到了一个代码,但是问题是我无法将2d矩阵转换为需要三个RGB通道的cv矩阵。

我再次搜索,但发现的只是将常规3d numpy矩阵转换为cv2矩阵,那么如何将numpy 2d矩阵转换为具有3个通道的cv2矩阵?

小智 5

因为numpy.ndarray是cv2的基础,所以您只需像往常一样编写代码,例如

img_np = np.ones([100,100])
img_cv = cv2.resize(img_np,(200,200))
Run Code Online (Sandbox Code Playgroud)

你可以试试

  • 这个答案似乎在回答一个完全不同的问题。该问题没有询问有关调整数组大小的问题。 (3认同)

use*_*882 -3

最好将现有的 numpy 数组堆叠在其自身副本的另一个上方,而不是重塑它并添加第三个轴。检查这个代码:

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()
Run Code Online (Sandbox Code Playgroud)

您将得到一个灰色图像。