场景:从一张 palette 图片(索引图片)中筛选索引值为 6 的水体(其他的单通道图片,如灰度图,处理方法相似)
import matplotlib.pyplot as plt import numpy as np from PIL import Image # 读取图片 ann = np.array(Image.open(ann_first)) # 生成与原图同等大小的,由 true/false 组成的矩阵 # 索引值为 6 时,为 true water_filtered = (ann[:, :]==6) # 拷贝图片 water = ann.copy() # true 时,保留原值 water[:, :] = water[:, :] * water_filtered # 显示图片 plt.imshow(water)2. 从多通道图片中筛选颜色
场景:从一张 RGB 图片中筛选红色 (255, 0, 0),其他多通道图处理方法类似
import matplotlib.pyplot as plt import numpy as np from PIL import Image ann = np.array(Image.open(ann_first)) # 分别过滤 通道 R, G, B red_filtered = (ann[:, :, :]==(255, 0, 0)) # 在提取一定范围的颜色时,可以将 == 调整为 < 或 > # red_filtered = (ann[:, :, 0]==255)&(ann[:, :, 1]==0)&(ann[:, :, 2]==0) red = ann.copy() red[:, :, :] = red[:, :, :] * red_filtered # red[:, :, 0] = red[:, :, 0] * red_filtered # red[:, :, 1] = red[:, :, 1] * red_filtered # red[:, :, 2] = red[:, :, 2] * red_filtered plt.imshow(red)3. 扩展
关于一定范围内的颜色筛选可以参考 OpenCV 中 inrange 方法,或者也可以将文中两种方法的 “等于” 调整为 ”大于“ 或 ”小于“ 。
4. 参考Image Processing with Python — Color Isolation for Beginners | by Tonichi Edeza | Towards Data Science: https://towardsdatascience.com/image-processing-with-python-color-isolation-for-beginners-3b472293335b
- 文章系个人学习总结,希望可以给大家带来些许启发,欢迎提出建议或给予指正。
- 本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
- 欢迎大家转载分享,转载请标明源地址,谢谢



