将图像numpy数组直接转换为灰度数组而不保存图像

问题描述

我有一个图像的尺寸为img_array的NumPy数组(h,w,3),这是某些函数的结果。我想将此NumPy数组直接转换为灰度。

可能的解决方案: 使用img_arraycv2.imwrite(path)保存为图像。然后使用cv2.imread(path,cv2.GRAYSCALE)

重新阅读

但是,我正在寻找这样的东西:

def convert_array_to_grayscale_array(img_array):
        do something...
        return grayscare_version

我已经尝试过cv2.imread(img_array,CV2.GRAYSCALE),但是它抛出的错误img_array必须是文件路径名。

我认为保存单独的图像将占用更多的磁盘空间。是否有使用或不使用OpenCV库函数的更好方法

解决方法

scikit-image具有颜色转换功能:https://scikit-image.org/docs/dev/auto_examples/color_exposure/plot_rgb_to_gray.html

from skimage.color import rgb2gray

grayscale = rgb2gray(img_array)