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

尝试在图像中绘制正方形时遭遇ValueError广播错误求助

问题修复:图像绘制正方形时的ValueError错误

错误原因

你代码里的img[90:200, 90:200, 1:2]选取的是单通道(索引1到2是左闭右开区间,实际只取第2个通道,对应RGB的绿色通道),但赋值的[0,255,0]是3个元素的数组,形状(3,)和目标区域的形状(110,110,1)不匹配,导致广播失败报错。

修复方案

根据你的需求(绘制绿色正方形),有两种正确的写法:

方案1:给正方形区域设置完整RGB绿色

修改通道切片为:(表示所有3个RGB通道),直接赋值绿色的RGB值:

from skimage import io
import numpy as np
from matplotlib import pyplot as plt

img = io.imread("imagem.jpg")
# 可选:查看图像形状,确认是RGB图(形状为(高度, 宽度, 3))
print("图像形状:", img.shape)

# 给90-200行、90-200列的区域设置绿色(RGB: 0,255,0)
img[90:200, 90:200, :] = [0, 255, 0]

plt.imshow(img)
plt.show()

方案2:仅修改绿色通道(如果只需要调整单通道)

如果只是想把正方形区域的绿色通道拉满(偏绿色),只需要给单通道赋值单个数值:

# 仅将正方形区域的绿色通道(索引1)设为255
img[90:200, 90:200, 1] = 255

额外说明

  • 图像切片规则:img[行范围, 列范围, 通道范围],所有区间都是左闭右开,比如90:200会选取从第90到第199的像素,共110个像素长度。
  • 如果后续使用img_as_float将图像转为浮点型(0-1范围),赋值时要对应改为[0, 1, 0]这类浮点数值。

内容的提问来源于stack exchange,提问作者Julia Rodrigues Marques do Nas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 22:32:20