首页 > 解决方案 > 标量变量的索引无效(python)

问题描述

我正在尝试将每一行和每一列中的浮点数与用户输入(0-255)进行比较。如果输入在浮点数的标准差内;然后我将值设置为红色。(因此是 255,0,0)。我不明白这个错误是 通过矩阵迭代的

  user_input = input("Lorum Ipsum : ") 

  avg_img = sum(images) / len(images)
  std_dev = np.std(avg_img, dtype=np.float64)


  for i in range(0, len(avg_img)): #i is row
    for j in range(0, len(avg_img[i])): #j is column
        if (std_dev[i][j] > (user_input)).any() : 
            avg_img[i][j] = [255.0, 0.0, 0.0]

标签: pythonimage-processing

解决方案


您观察到的错误与以下代码有关:

std_dev[i][j]

因为std_dev是标量或单个数字,不支持索引。

可能,您想要使用axis参数 ofnp.std()并且也许您想要使用images(or np.array(images)) 作为它的输入。


还:

  • 您可能更愿意使用np.mean()而不是sum() / len(). 不知道是什么就很难说images
  • 的结果input()string 并且很可能您不想将数字与字符串进行比较,而是想转换为 say float()or int()
  • 请使用有意义的名称:user_input这是一个糟糕的选择,因为它描述的内容比它包含的更多。threshold是一个更好的名字

推荐阅读