如何在python中将RGBA图像转换为灰度?

时间:2019-04-14 15:54:53

标签: python opencv rgba

我有一个(height, width, 4)形状的数组,即RGBA格式,我想将其转换为灰度。原始数组的RGB值为0,并且图片完全基于白色背景上的Alpha值进行渲染,因此将其转换为灰度的传统方法会失败(例如cv2.cvtColor(img,cv2.COLOR_RGBA2GRAY))。

源图像:

Source Image

1 个答案:

答案 0 :(得分:1)

假设:

  • 您的图片始终为黑白;

  • 白色被定义为透明;

如果这些都是真的,那么您可以直接使用Alpha频道

import cv2
import matplotlib.pyplot as plt

img = cv2.imread('image.png', cv2.IMREAD_UNCHANGED)
img_gray = 255 - img[:, :, 3]

plt.imshow(img_gray, cmap='gray', vmin=0, vmax=255)
plt.show()

如果您还可以使用彩色图像,那么我想请您提供一张。