快速循环算法opencvpython

快速循环算法opencvpython,python,performance,for-loop,Python,Performance,For Loop,我为我的灰色图像创建了一个带有两个for循环的算法。 值180上方和图像左侧的每个像素都会获得一个新值 这个算法非常慢,需要几秒钟的时间 有没有更快的方法做这项工作 for x in range(img.shape[0]): for y in range(img.shape[1]): if(img[x,y]>180 or y>450): img[x,y]=255 您应该使用向量化的numpy操作,比如 i

我为我的灰色图像创建了一个带有两个for循环的算法。 值180上方和图像左侧的每个像素都会获得一个新值

这个算法非常慢,需要几秒钟的时间

有没有更快的方法做这项工作

   for x in range(img.shape[0]):
        for y in range(img.shape[1]):
            if(img[x,y]>180 or y>450):
                img[x,y]=255

您应该使用向量化的
numpy
操作,比如

img[img>180]=255
img[:,450:]=255
应该做循环所做的事情,但是。要同时应用这两个条件,可以执行以下操作

img[:,450:][img[:,450:]>180]=255

我在代码中发现了一个错误。它应该是“and”,而不是“or”。是否可以在and条件下使用这些运算符?@EdwinB。请查看编辑,如果这回答了您的问题,请不要忽略它,以便为将来的用户标记该问题。我不知道为什么,但代码不起作用。括号可能有问题吗?@EdwinB。很抱歉,我已经修复了它-现在应该可以工作了。谢谢,现在它可以工作了,但不知怎么的,它只改变了图像右侧的像素。但解决办法应该很简单