Python 2.7中frame索引报错IndexError:仅允许单个省略号,求修复
解决IndexError: 索引只能有单个省略号的问题
嘿,我来帮你搞定这个错误!你遇到的问题很明确:Numpy数组的索引规则里,同一个索引表达式只能用一个...(省略号),它的作用是占位,表示"所有没明确写出来的维度",你写两个自然会触发IndexError。
先理清楚你的需求:你应该是想从OpenCV读取的彩色图像(三维numpy数组,形状为(高度, 宽度, 3),通道顺序是BGR)里,提取第三个通道(红色通道,索引为2),然后判断每个像素的通道值是否大于236对吧?
给你两种修复方案,效果完全一样,选哪个都可以:
方案1:使用单个省略号(推荐)
把重复的省略号去掉,只保留一个,然后指定通道索引:
num = (frame[..., 2] > 236)
这里...会自动匹配前两个维度(高度和宽度的所有元素),最后一个2精准定位到第三个通道,完美实现你的需求。
方案2:使用明确的切片语法
如果你觉得省略号不够直观,也可以用:来表示取该维度的全部元素:
num = (frame[:, :, 2] > 236)
前两个:分别对应高度和宽度的所有像素,最后一个2同样是第三个通道的索引,运行结果和方案1完全一致。
修复后,num会生成一个和原图像尺寸相同的布尔数组,每个元素对应原图像位置的像素是否满足"第三通道值>236"的条件,后续你可以用这个数组做掩码、统计符合条件的像素数等操作~
内容的提问来源于stack exchange,提问作者D4LI3N
相关产品推荐
相关产品推荐

