如何使用OpenCV调整图像大小并保留透明背景
解决OpenCV缩放透明图片时背景变黑的问题
问题根源是你当前的代码没有读取图片的Alpha透明通道:OpenCV默认的cv2.imread()只会加载BGR三个颜色通道,丢失了透明信息,缩放后原本透明的区域就会被填充为黑色。
修复步骤如下:
- 读取图片时添加
cv2.IMREAD_UNCHANGED参数,保留包括Alpha通道在内的所有通道 - 直接指定目标尺寸
(100, 100)即可,无需手动计算比例(OpenCV会自动处理) - 确保缩放后的图片保存为支持透明的格式(比如PNG)
修改后的完整代码:
import cv2 # 读取带Alpha通道的图片 img = cv2.imread('image.png', cv2.IMREAD_UNCHANGED) # 直接缩放至100×100,保留所有通道 resized = cv2.resize(img, (100, 100)) # 保存处理后的图片(必须用PNG格式才能保留透明) cv2.imwrite('resized_image.png', resized)
额外说明:
- 如果你的图片确实包含Alpha通道,
img.shape会显示为(256, 256, 4)(4代表BGR+Alpha) - 若需要自定义插值方式(比如更平滑的缩放),可以在
resize中添加interpolation参数,例如cv2.resize(img, (100,100), interpolation=cv2.INTER_AREA)
内容的提问来源于stack exchange,提问作者Rodion Iskhakov
相关产品推荐
相关产品推荐

