在 opencv python (cv2) 中调整透明图像的大小

Moh*_*ini 5 python opencv image image-resizing

我有一个形状为 (120, 470, 4) 的图像,我想将其调整为另一个尺寸,例如 (100, 400, 4)。cv2.resize我尝试通过使用如下函数来实现它

reshaped_image = cv2.resize(image, (100, 400))

并将 reshape_image 粘贴到更大的透明图像内,但问题是 reshape_image 的形状为 (100, 400, 3) 而不是 (100, 400, 4)。

我做错了什么或者该cv2.resize函数会丢失透明度信息吗?最后,我很高兴了解您的解决方案。(如果可能的话,用简单的例子)

问候

tfv*_*tfv 2

这是一个加载 3 通道图像的示例,获取其蓝色通道并将其复制为 Alpha 通道(这完全没有意义,但我手头没有 4 通道图像),然后再次将其合并为 4 通道图像。然后调整该图像的大小。

如果加载4通道图像,标志-1表示图像加载不变,因此可以直接加载并分割所有4通道。

所有图像的形状均已打印,并且可以调整大小。我正在使用 opencv 版本 3.1.0。

希望有帮助。

import cv2
import numpy as np

img = cv2.imread('image.jpg', -1)
print img.shape

b_channel, g_channel, r_channel = cv2.split(img)
alpha_channel = b_channel 
print b_channel.shape
print g_channel.shape
print r_channel.shape
print alpha_channel.shape

img_RGBA = cv2.merge((b_channel, g_channel, r_channel, alpha_channel))
print img_RGBA.shape

res = cv2.resize(img_RGBA,(100, 400), interpolation = cv2.INTER_CUBIC)
print res.shape
Run Code Online (Sandbox Code Playgroud)