【问题标题】:python "can't assign to comparison" errorpython“无法分配给比较”错误
【发布时间】:2020-05-05 23:33:16
【问题描述】:

我希望单个 YCbCr 通道小于或大于 128 的图片设置为 0。 但我不断收到错误“无法分配给比较”,我真的不知道我做错了什么。

这是代码:

def calc_coloursplash(image_data, modus):
    ycbcr = image_data.convert('YCbCr')

    if modus == 1:
        ycbcr[:,:,1] <= 128 = 0
        ycbcr[:,:,2] <= 128 = 0
    elif modus == 2:
        ycbcr[:,:,1] >= 128 = 0
        ycbcr[:,:,2] <= 128 = 0
    elif modus == 3:
        ycbcr[:,:,1] >= 128 = 0
        ycbcr[:,:,2] >= 128 = 0
    elif modus == 4:
        ycbcr[:,:,1] <= 128 = 0
        ycbcr[:,:,2] >= 128 = 0
    else:
        print("There are only modes 1-4")

    return ycbcr

而这张图展示了我实现的不同模式:

【问题讨论】:

  • ycbcr[:,:,1] &lt;= 128 是一个比较; ycbcr[:,:,1] &lt;= 128 = 0 正在尝试将 0 分配给它。
  • 好的,我明白了。以及如何为 128 以下的所有值分配零?

标签: python image filter assign ycbcr


【解决方案1】:

你可以使用 np.where:

ycbcr[:,:,1][np.where(ycbcr[:,:,1]<128)]=0

【讨论】:

  • 谢谢,但它显示“图像对象不可下标”作为错误
  • 我认为您使用的是 PIl 包。你可以使用:a = np.array(a) 从这里:stackoverflow.com/questions/384759/…
  • 我只是在做image = Image.open("ahab.jpg") 然后ycbcr = image.convert('YCbCr')。会不会是图片加载方式不对?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-16
  • 1970-01-01
  • 2015-03-27
  • 2015-06-22
  • 1970-01-01
  • 2015-01-04
相关资源
最近更新 更多