RGB到没有cmap的灰度

问题描述

有没有一种方法可以在不使用matpotlib中使用cmap的情况下将图像更改为灰度? 我的功能

def grayscale(image):
    img = image.copy()
    r=img[:,:,0]*0.3
    g=img[:,1]*0.59
    b=img[:,2]*0.11
    gray=r+g+b
    img=np.dstack((gray,gray,gray))
    return img
plt.imshow(img)

但是,我得到的图像只是黑白图像,而不是灰度TT。然后,当我尝试使用grey = r + g + b,plt.imshow(img)时,我得到了一张绿色和黄色的图片。我尝试在各处搜索获取线索,而我发现的只是使用cmaps。但是我正在做的项目不允许我们使用cmap。

解决方法

这是使用您的代码的可行解决方案-您应在image_path变量中添加图片路径:

import numpy as np
from PIL import Image
import cv2
def grayscale(image):
    img = np.asarray(Image.open(image))
    r = img[:,:,0]*0.3
    g = img[:,1]*0.59
    b = img[:,2]*0.11
    gray = r+g+b
    return gray
image_path = "test.jpg"
img = grayscale(image_path)
cv2.imwrite('greyscale.jpg',img)

诀窍是您没有以正确的方式加载图像。