PIL绘制的圆角矩形转numpy数组全为0的技术求助
解决PIL绘制圆角矩形转numpy数组全为0的问题
问题根源分析
你的代码中设置的圆角半径radius=75超过了图像高度(100px)的一半(50px),部分PIL版本会因参数不合理导致填充操作未正确生效;另外部分环境中图像像素数据未即时加载到内存,也会导致转数组时全为0。
具体解决步骤
调整合理的圆角半径
图像高度为100px,最大有效圆角半径为50px(短边的一半),修改参数后重新绘制:from PIL import Image, ImageDraw import numpy as np a_rect = Image.new('RGBA', (400, 100)) draw = ImageDraw.Draw(a_rect) # 将radius改为50,适配图像高度 draw.rounded_rectangle((0, 0, 400, 100), outline=None, radius=50, fill='blue' )验证绘制是否生效
调用getpixel检查核心位置的像素值,确认填充是否成功:print(a_rect.getpixel((200, 50))) # 正常应输出 (0, 0, 255, 255)强制加载像素数据再转数组
若像素值正确但转数组仍全为0,先调用load()强制加载像素到内存,再转换:a_rect.load() arr = np.asarray(a_rect)替换数组转换方式
尝试用np.array()替代np.asarray(),部分场景下两者的内存处理逻辑有差异:arr = np.array(a_rect)升级依赖库版本
旧版本的PIL或numpy可能存在兼容性问题,升级到最新版本:pip install --upgrade pillow numpy
内容的提问来源于stack exchange,提问作者Abhishek Jain
相关产品推荐
相关产品推荐

