9

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

my_matrix_screenshot

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

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

4

2 回答 2

9

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

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

你可以试试

于 2018-02-13T03:43:46.477 回答
-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()

你会得到一个灰色的图像。

于 2017-10-14T18:02:50.590 回答