栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

从图片中筛选特定颜色

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从图片中筛选特定颜色

1. 从单通道图片中筛选颜色

场景:从一张 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 国际许可协议进行许可。
  • 欢迎大家转载分享,转载请标明源地址,谢谢
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/932176.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号