问题描述
有没有一种方法可以在不使用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)
诀窍是您没有以正确的方式加载图像。