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

时间:2016-05-29 16:11:18

标签: python image opencv image-resizing

我有一个有形状的图像(120,470,4),我想把它调整到另一个大小,例如(100,400,4)。 我尝试使用cv2.resize函数作为下面的

来实现它

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

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

我正在做错什么或cv2.resize功能会失去透明度信息吗? 最后,我很高兴知道您的解决方案。 (如果可能的话,用简单的例子)

问候

1 个答案:

答案 0 :(得分:3)

这是一个加载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