我想在Python中使用PIL来删除部分基于像素RGB值的图像。从文档看来,功能点可以做我正在寻找的东西。但是,我很难跟踪文档。如果我想将蓝色值小于100的所有像素更改为白色,那么实现此目的最简单的方法是什么?Python PIL基于其颜色删除图像的部分
2
A
回答
1
像下面将工作:
source = im.split()
mask = source[2].point(lambda i: i < 100 and 255)
im = Image.merge(im.mode, source)
见PIL Tutorial下点运算走向更多资料。
2
我认为最简单的方法是使用Mahotas library,它可以让你把图像加载到NumPy程序。然后你可以在你的图像上使用逻辑索引。
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]
的好处是,Mahotas图像加载正确的numpy的阵列,它可以让你轻松地在片一致NumPy的语法不同的尺寸。另外,如果你真的想用PIL做图像I/O,那么你应该在PIL中寻找可以将图像转换为NumPy数组的函数,然后上面的代码仍然可以工作。
总的来说,我总是有一致的问题让PIL真正的工作。似乎总会有某种图像文件类型支持问题,某些解码器问题,或其他一些PIL出错的问题。这非常挑剔。出于同样的原因,我通常会尽量避免使用Python-OpenCV。我更喜欢scikits.learn,scikits.image,Mahotas和PyPNG的工作流程。
相关问题
- 1. 基于颜色的图像分割
- 2. 使用MATLAB删除图像的特定颜色边缘部分
- 3. 使用PIL过滤部分图像,python
- 4. 删除颜色表的一部分
- 5. Python PIL比较颜色
- 6. Python的PIL裁剪问题:裁剪图像的颜色扭曲
- 7. 如何用PIL(Python-Imaging)反转图像的颜色?
- 8. 更改图像部分的颜色
- 9. 图像的填充(颜色)部分
- 10. 删除图像中的所有特定颜色(颜色范围)?
- 11. 通过颜色排除图像的一部分
- 12. PIL:创建图像颜色亮度的一维直方图?
- 13. ScrollView删除基于位置的图像
- 14. 随机删除部分图像/像素
- 15. 用OpenCV删除图像的部分
- 16. 删除从位图图片的颜色?
- 17. PIL jpeg,如何保留像素颜色
- 18. 基于颜色直方图的图像搜索
- 19. 删除基于子在Python
- 20. 使ImageView以不同颜色显示图像的黑色部分
- 21. 从图像中删除选定的颜色(灰度图形)
- 22. 试图改变图像中的透明部分的颜色
- 23. 颜色基于数
- 24. python - opencv morphologyEx删除特定颜色
- 25. 基于值的颜色matplotlib条形图
- 26. 删除图像的蓝色和绿色
- 27. 将图像/图案应用于馅饼部分而不是普通的颜色
- 28. 用Python打开图像PIL
- 29. Python PIL图像复制
- 30. Python PIL图像保存