Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中按条件替换图像像素颜色_Python_Arrays_Image_Numpy_Replace - Fatal编程技术网

在Python中按条件替换图像像素颜色

在Python中按条件替换图像像素颜色,python,arrays,image,numpy,replace,Python,Arrays,Image,Numpy,Replace,我有一个RGBA图像,我必须找出是否有任何像素的红色值小于150,并将这些像素替换为黑色。我正在为此使用以下代码: import numpy as np imgarr = np.array(img) for x in range(imgarr.shape[0]): for y in range(imgarr.shape[1]): if imgarr[x, y][0] < 150: # red value < 150 imgarr[

我有一个RGBA图像,我必须找出是否有任何像素的红色值小于150,并将这些像素替换为黑色。我正在为此使用以下代码:

import numpy as np
imgarr = np.array(img)
for x in range(imgarr.shape[0]):
    for y in range(imgarr.shape[1]):
        if imgarr[x, y][0] < 150:    # red value < 150
            imgarr[x, y] = (0,0,0,255)
将numpy导入为np
imgarr=np.数组(img)
对于范围内的x(imgarr.shape[0]):
对于范围内的y(imgarr.shape[1]):
如果imgarr[x,y][0]<150:#红色值<150
imgarr[x,y]=(0,0,0255)
然而,这是一个缓慢的循环,我确信它可以使用一些函数进行优化,例如,但我无法将其应用到这段代码中。如何解决这个问题?

使用与阈值比较的掩码-

img = np.asarray(img)
imgarr = np.where(img[...,[0]]<150,(0,0,0,255),img)
img=np.asarray(img)

imgarr=np。其中(img[…,[0]]对于一个通道图像,我们可以执行以下操作

out_val = 0
gray = cv2.imread("colour.png",0)

gray[gray<value] = out_val

out\u val=0
灰色=cv2.imread(“color.png”,0)

gray[gray使用
..
[0]
0,数组中没有一个
是有趣的。有没有一个好的链接可以了解更多关于这些的信息?@rnso这应该会有所帮助-在
np中,
参数应该是
imgar
而不是
img
(在这两个位置)@rnso是的,我假设
img
是一个数组。修复。