V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
hellogitooxx
V2EX  ›  Python

遇到个难道,图像识别颜色,然后返回识别对应颜色的别称

  •  
  •   hellogitooxx · 2021-05-02 13:08:31 +08:00 · 2213 次点击
    这是一个创建于 1301 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我得到一张图片,图片是在视频里截图出来的,如下(类似),
    https://i.loli.net/2021/05/02/Ij4FZ86fYtzDgTu.jpg
    我得得到识别图像中的颜色,然后返回所对应颜色的别称。
    需要反回的的数据:
    https://i.loli.net/2021/05/02/J7QECBwdnvW3k29.jpg
    刚开始我网上搜索,一般使用的是 opencv 获取图像 RGB 值,但我对 opencv 了解不多,
    想请教有什么方法快速识别图片中的颜色然后使用对应的颜色文字
    5 条回复    2021-05-02 15:49:04 +08:00
    crab
        1
    crab  
       2021-05-02 13:15:33 +08:00   ❤️ 3
    webcolors rgb_to_name ?
    pcbl
        2
    pcbl  
       2021-05-02 13:52:48 +08:00   ❤️ 1
    opencv 自己获取的话对有透明度的 png 图片需要特殊处理,一般获取到的是 rgb 格式的颜色值,需要提前定义目标颜色的 rgb 列表,然后通过计算找到最接近的那个图片名字:计算原理是把颜色值看作 3 维空间的点,两个点距离最近的就是最接近的颜色
    imn1
        3
    imn1  
       2021-05-02 14:00:01 +08:00   ❤️ 1
    你这题其实是两种解法,一个是未知边缘找出色块分布,一个是实际已知色块的边缘,找出是什么颜色
    前者需要一定图片分析功能,所以搜出来 opencv 的文章多
    后者获取某个点的 RGB,根据该点所处色块标注,大部分图片类的模块都可以,不需要非用 opencv 不可

    所以你的图,是否都是这种方方块块可以通过数学方法,推导求边缘位置的,如果是,用第二种求法。如果不是,就要分析图片了
    sadfQED2
        4
    sadfQED2  
       2021-05-02 14:07:11 +08:00 via Android   ❤️ 1
    如果你方块边框颜色是固定的,直接遍历图片像素点,然后分割边界就行了,根本不用 opencv 。
    billlee
        5
    billlee  
       2021-05-02 15:49:04 +08:00   ❤️ 1
    这从视频截出来的,色彩信息肯定被压缩过了,识别颜色要在 YCbCr 色彩空间上操作吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2867 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 09:08 · PVG 17:08 · LAX 01:08 · JFK 04:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.