You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 15:15:10