我有一个有形状的图像(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
功能会失去透明度信息吗?
最后,我很高兴知道您的解决方案。 (如果可能的话,用简单的例子)
问候
答案 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