在Python中根据条件替换图像像素颜色 [英] Replace image pixel color on condition in Python

查看:565
本文介绍了在Python中根据条件替换图像像素颜色的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个RGBA图像,我必须在其中查找是否有任何像素的红色值< 150并将此类像素替换为黑色.我为此使用以下代码:

I have an RGBA image where I have to find if any pixel has red value < 150 and to replace such pixels to black. I am using following code for this:

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)

但是,这是一个缓慢的循环,我确信可以使用

However, this is a slow loop and I am sure it can be optimized using some function such as numpy.where, but I am not able to fit it in this code. How can this be solved?

推荐答案

使用

Use np.where with the mask of comparison against the threshold -

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

我们使用img[...,[0]]来保持np.where广播分配所需的暗淡数量.因此,另一种方法是使用img[...,0,None]<150获取保持暗淡的蒙版.

We are using img[...,[0]] to keep the number of dims as needed for broadcasted assignment with np.where. So, another way would be to use img[...,0,None]<150 to get the mask that keeps dims.

这篇关于在Python中根据条件替换图像像素颜色的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆