[英]How to read the alpha channel of a TIFF image in Python OpenCV?
[英]how to convert alpha channel of the image to white color using opencv python?
我想使用 openCV 将 PNG 和 GIF 图像转换为 JPEG,应该将 alpha 通道转换为白色。 有什么办法可以做到这一点吗?
使用 Open CV,您可以打开 RGB 格式的图像,即,当您执行 cv2.imread 时,将第二个参数设为 1 而不是 -1。 -1 以任何图像的原始格式打开图像,即它会保留透明度。 将该参数保持为 1,您可以以 RGB 格式打开它。 之后,您可以执行 cv2.imwrite 来保存没有透明度的 RGB 图像。 您可以提及文件格式为 .jpg
在 RGBA 图像中,alpha 通道表示背景对图像的影响。 所以你有一个这样的方程(不是代码):
out = (bg * (1 - alpha)) + (image * alpha)
其中 out 是最终图像,图像是我们 RGBA 图像的 R、G 和 B 通道,bg 是背景图像。 这里我们有 0 <= alpha <= 1。
对于您的情况,您希望您的背景是平面白色图像,因此从这一点上计算非常简单。 你可以这样做:
B, G, R, A = cv2.split(image)
alpha = A / 255
R = (255 * (1 - alpha) + R * alpha).astype(np.uint8)
G = (255 * (1 - alpha) + G * alpha).astype(np.uint8)
B = (255 * (1 - alpha) + B * alpha).astype(np.uint8)
image = cv2.merge((B, G, R))
如果你不喜欢这种拆分和合并的东西(像我一样),你可以使用这个实现:
bg = np.array([255, 255, 255])
alpha = (image[:, :, 3] / 255).reshape(image.shape[:2] + (1,))
image = ((bg * (1 - alpha)) + (image[:, :, :3] * alpha)).astype(np.uint8)
在第一行我制作背景图像,在第二行我计算 0 和 1 之间的 alpha 值并将其重塑以使其成为 3-D 数组(乘法需要),最后一行是 alpha 的公式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.