Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/366.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 PIL根据图像的颜色删除图像的部分_Python_Python Imaging Library - Fatal编程技术网

Python PIL根据图像的颜色删除图像的部分

Python PIL根据图像的颜色删除图像的部分,python,python-imaging-library,Python,Python Imaging Library,我试图在python中使用PIL来删除基于像素RGB值的部分图像。从文档中可以看出,功能点可以完成我想要的功能。然而,我很难遵循文档。如果我想将所有蓝色值小于100的像素更改为白色,最简单的方法是什么?我认为最简单的方法是使用,它可以将图像加载为NumPy ndarray。然后,您可以对图像使用逻辑索引 import Mahotas as mh import numpy as np fname = "/home/stuff/images/my_image.jpg" image = mh

我试图在python中使用PIL来删除基于像素RGB值的部分图像。从文档中可以看出,功能点可以完成我想要的功能。然而,我很难遵循文档。如果我想将所有蓝色值小于100的像素更改为白色,最简单的方法是什么?

我认为最简单的方法是使用,它可以将图像加载为NumPy ndarray。然后,您可以对图像使用逻辑索引

 import Mahotas as mh
 import numpy as np

 fname = "/home/stuff/images/my_image.jpg"
 image = mh.imread(fname)

 # Make a copy to play with the indices.
 img = np.copy(image)

 # Replace places with 3rd coordinate less than 100 with the white-color
 # vector [255, 255, 255].
 inds = img[:,:,2] < 100
 img[inds] = [255,255,255]
将Mahota作为mh导入
将numpy作为np导入
fname=“/home/stuff/images/my_image.jpg”
image=mh.imread(fname)
#制作一份副本以播放索引。
img=np.copy(图像)
#将第三坐标小于100的位置替换为白色
#向量[255,255,255]。
inds=img[:,:,2]<100
img[inds]=[255255]
好处是Mahotas将图像直接加载到Numpy数组中,这使您可以轻松地以Numpy一致的语法分割不同的维度。或者,如果您真的想使用PIL进行映像I/O,那么您应该在PIL中查找允许您将映像转换为NumPy数组的函数,然后上面的代码仍然可以工作


但总的来说,要让PIL真正发挥作用,我一直都有一些问题。PIL似乎总是存在某种图像文件类型支持问题、解码器问题或其他问题。它很挑剔。出于同样的原因,我通常会避免使用Python OpenCV。我更喜欢使用scikits.learn、scikits.image、Mahotas和PyPNG的工作流。

类似于以下内容的工作流程可以:

source = im.split()
mask = source[2].point(lambda i: i < 100 and 255)
im = Image.merge(im.mode, source)
source=im.split()
掩码=源[2]。点(λi:i<100和255)
im=Image.merge(im.mode,source)
有关更多信息,请参阅点操作标题下的