【Opencv实战】颜色测试:你是色盲/色弱吗?从零带你了解色彩与原理,简单的颜色识别小程序,感动.jpg(全是干货)

这篇具有很好参考价值的文章主要介绍了【Opencv实战】颜色测试:你是色盲/色弱吗?从零带你了解色彩与原理,简单的颜色识别小程序,感动.jpg(全是干货)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

导语

Hello,大家好呀!我是木木子吖~

一个集美貌幽默风趣善良可爱并努力码代码的程序媛一枚。

听说关注我的人会一夜暴富发大财哦~

(哇哇哇 这真的爱😍😍)

所有文章完整的素材+源码都在👇👇

粉丝白嫖源码福利,请移步至CSDN社区或文末公众hao即可免费。

【Opencv实战】颜色测试:你是色盲/色弱吗?从零带你了解色彩与原理,简单的颜色识别小程序,感动.jpg(全是干货)

为什么用手机自拍时,它能识别出你的脸,还能估算你的年龄?智能机器人又是怎么“看”到的

人?当当当,给大家介绍一下opencv模块。

表面看起来不起眼的东西,其实背后有可能很神奇……能实现多种功能是现在计算机编程人员最

喜欢最需要的库之一。

今天我们就来介绍一下神奇方法之我们将用python的OpenCV模块实现简答的颜色识别💥

(一个小案例文章太短了,就索性两个小案例一起来讲解啦)

【Opencv实战】颜色测试:你是色盲/色弱吗?从零带你了解色彩与原理,简单的颜色识别小程序,感动.jpg(全是干货)

正文

第一个小案例💨💨💨

一、OpenCV中的基本颜色检测

1)思路讲解

我们用颜色空间或颜色模型来表示计算机上的颜色,该模型基本上将颜色范围描述为数字元

组。除了讨论每种颜色之外,我们还将讨论我们使用的最常见的颜色空间。即RGB(红色,绿

色,蓝色)和HSV(色调,饱和度,值)。

RGB基本上将颜色描述为三个组成部分的元组。每个分量可以取0到255之间的值,其中元组

(0,0,0)表示黑色,而(255,255,255)表示白色。例如,如果要在屏幕上显示纯蓝色

像素,则R值将为0,G值将为0,B值将为255。

下面是一些RGB颜色的例子:

【Opencv实战】颜色测试:你是色盲/色弱吗?从零带你了解色彩与原理,简单的颜色识别小程序,感动.jpg(全是干货)

2)主程序

import cv2import numpy as np
img = cv2.imread('www.linuxmi.com.png')
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
#Red color rangle  169, 100, 100 , 189, 255, 255
lower_range = np.array([110,50,50])
upper_range = np.array([255,255,0])
mask = cv2.inRange(hsv, lower_range, upper_range)
cv2.imshow('www.linuxmi.ccom - image', img)
cv2.imshow('www.linuxmi.ccom - mask', mask)
cv2.waitKey(0)cv2.destroyAllWindows()

3)原图展示

首先,你需要在你的工作目录中有一个图像,我正在使用这个图像,你可以从下面得到这个图

像。

【Opencv实战】颜色测试:你是色盲/色弱吗?从零带你了解色彩与原理,简单的颜色识别小程序,感动.jpg(全是干货)

首先我们需要加载图像,然后我们将图像转换为HSV颜色。
img = cv2.imread('www.linuxmi.com.png')
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
之后,您需要确定颜色的上限和下限,可以为此建议使用imutils。在上图中,我们将检测三种蓝色。lower_range = np.array([110,50,50])
upper_range = np.array([255,255,0])
之后,我们需要创建图像的蒙版。
mask = cv2.inRange(hsv, lower_range, upper_range)
最后我们需要展示图像和蒙版。
cv2.imshow('www.linuxmi.ccom - image', img)
cv2.imshow('www.linuxmi.ccom - mask', mask)

4)效果展示

【Opencv实战】颜色测试:你是色盲/色弱吗?从零带你了解色彩与原理,简单的颜色识别小程序,感动.jpg(全是干货)

第二个小案例💨💨💨(升级版)

参考:RGB-颜色模型

参考:HSV色彩模型

一、 BGR 和 HSV 颜色模型

1)BRG Model

RGB是红色、绿色和蓝色的缩写。这个系统中的颜色是通过添加不同强度的红、绿、蓝光产生

的。这种原理被称为加色混合,例如用于LCD显示器,如所示图1。每个像素由红色、绿色和蓝

色子像素组成。

【Opencv实战】颜色测试:你是色盲/色弱吗?从零带你了解色彩与原理,简单的颜色识别小程序,感动.jpg(全是干货)

​RGB颜色模型可以理解为三维笛卡尔坐标系中的立方体,红色、绿色和蓝色通道各有一个轴

[BB09b,第186页]。因此,颜色可以定义为矢量(r,g,b)T(r,g,b)T,在哪里rr, gg,以及bb是每

个通道的颜色强度。为了区分RGB和其他颜色模型,我们定义了元组(r,g,b)RGB:=

(r,g,b)T(r,g,b)RGB:=(r,g,b)T. 图2显示RGB立方体,每个通道的值在[0,1][0,1]间隔。然而,在计

算机图形学中,介于0和255之间的整数值——在十六进制系统中介于0和FF之间——也是一种

流行的选择。例如,RGB颜色可以用CSS [Çe11]和OpenGL中的任何一种符号来指定。

【Opencv实战】颜色测试:你是色盲/色弱吗?从零带你了解色彩与原理,简单的颜色识别小程序,感动.jpg(全是干货)

此类模型的缺点显而易见,就是很难去表达一种颜色。比如你修改了如下BGR中的B值,间接

地, G和R通道的颜色也会被改变掉。​

【Opencv实战】颜色测试:你是色盲/色弱吗?从零带你了解色彩与原理,简单的颜色识别小程序,感动.jpg(全是干货)

【Opencv实战】颜色测试:你是色盲/色弱吗?从零带你了解色彩与原理,简单的颜色识别小程序,感动.jpg(全是干货)

2)HSV Model

H表示Hue颜色;S表示Saturation饱和度;V表示Value明度。

简单理解就是H指定一种颜色,从0到360;S是白光所占程度,从0到1, 0表示饱和度最高,就

是白光最多;V表示明度,从0到1, 0表示最暗

【Opencv实战】颜色测试:你是色盲/色弱吗?从零带你了解色彩与原理,简单的颜色识别小程序,感动.jpg(全是干货)

二、环境安装

小编使用的环境:Python3、Pycharm社区版、opencv模块,部分自带的就不一一 展示啦。

 模块安装:pip install -i https://pypi.douban.com/simple/+模块名 

三、使用摄像头,利用HSV实现颜色识别

1)思路

读取摄像头视频流,取窗口中间一点,将其像素值(BGR)转换为HSV,然后根据Hue来简单判断

颜色。然后显示到窗口上。

2)主程序

import cv2

cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH,1080) #set window's width and height
cap.set(cv2.CAP_PROP_FRAME_HEIGHT,780) 

while True:
    _, frame = cap.read()
    hsv_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
    height,width,_ = hsv_frame.shape

    wx = int(width/2) # center 
    wy = int(height/2)

    center_color = hsv_frame[wy,wx] #中心点HSV像素值
    hue_value = center_color[0] #取Hue

    if hue_value < 5:
        color = 'RED'
    elif hue_value < 22:
        color = 'ORANGE'
    elif hue_value < 33:
        color = 'YELLOW'
    elif hue_value < 78:
        color = 'GREEN'
    elif hue_value <131:
        color = 'BLUE'
    elif hue_value < 167:
        color = 'VIOLET'
    else:
        color ='RED'
        
    bgr_color = frame[wy,wx]
    b,g,r = int(bgr_color[0]),int(bgr_color[1]),int(bgr_color[2])

    cv2.circle(frame,(wx,wy),5,(0,255,0),3) # center (x,y)
    cv2.putText(frame,color,(10,50),0,1,(b,g,r),2)
    cv2.imshow('frme',frame)
    key = cv2.waitKey(1)
    if key ==27:
        break

cap.release()
cv2.destroyAllWindows()

三、效果展示

1)green绿色

【Opencv实战】颜色测试:你是色盲/色弱吗?从零带你了解色彩与原理,简单的颜色识别小程序,感动.jpg(全是干货)

2)red红色

【Opencv实战】颜色测试:你是色盲/色弱吗?从零带你了解色彩与原理,简单的颜色识别小程序,感动.jpg(全是干货)

3)orange橙色

【Opencv实战】颜色测试:你是色盲/色弱吗?从零带你了解色彩与原理,简单的颜色识别小程序,感动.jpg(全是干货)

总结

好啦!今天的文章就到这里正式结束了哈——两个小案例简单的识别颜色就完成啦!

有需要的小伙伴儿记得学习学习哈,学习从不止步~

下面在这里做一个汇总,帮助你更有效率的找到之前写的文章,各种类型的哈🎉

🎯完整的免费源码领取处:找我吖!文末公众hao可自行领取,滴滴我也可!

🔨推荐往期文章——

项目1.1  动漫化人物

【突破次元壁】谁说二次元离我们遥远?Python特效火遍全网,关键技术原来是它。

项目1.6  年龄检测器

为什么每个女生都比较避讳别人问年龄问题?于是我偷偷写了一款年龄检测器,公司同事的年龄都被我知道了~

项目3.3  图片处理加/去水印

【一篇解决】Python图片处理: 去水印/加水印—这几个方法你一定要学会,太神奇了~(建议保留)

 项目3.4  Opencv水果识别小程序

【Opencv实战】识别水果的软件叫什么?一款超好用的识别软件分享,一秒鉴定(真是活~久~见~啊)

项目3.1    抠图神器

【爆赞】这款Python小程序自动抠图只需5秒,秒杀PS手动抠图?

🎄文章汇总——

汇总合集  Python—2022 |已有文章汇总 | 持续更新,直接看这篇就够了

(更多内容+源码都在✨文章汇总哦!!欢迎阅读喜欢的文章🎉~)

 

【Opencv实战】颜色测试:你是色盲/色弱吗?从零带你了解色彩与原理,简单的颜色识别小程序,感动.jpg(全是干货)文章来源地址https://www.toymoban.com/news/detail-493789.html

到了这里,关于【Opencv实战】颜色测试:你是色盲/色弱吗?从零带你了解色彩与原理,简单的颜色识别小程序,感动.jpg(全是干货)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++实战Opencv第二天——色彩空间转换函数和opencv中图像对象创建与赋值(从零开始,保姆教学)

    OpenCV是一个强大的计算机视觉库,使用C++作为主要编程语言,对于图像处理和计算机视觉领域具有重要意义。其提供了丰富的功能和算法,使得开发者能够快速实现各种图像处理和计算机视觉应用。OpenCV C++为图像处理和计算机视觉领域的开发者提供了一个高效、稳定的工具。

    2024年02月20日
    浏览(40)
  • C++实战Opencv第一天——win11下配置vs,opencv环境和运行第一个c++代码(从零开始,保姆教学)

    OpenCV (Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,它提供了大量的通用算法和功能,用于处理图像和视频数据。 C++ 通常提供比 Python 更高的执行速度 ,对于需要高性能处理的任务(如 实时视频处理或大规模图像分析 ) 。C++ 提供更细致的 内

    2024年01月19日
    浏览(51)
  • 面试官:你是怎么测试接口测试的?

    经常有小伙伴让我给大家分享一些接口测试面试题,但是因为时间关系,一直没弄,趁今天有空,赶紧给大家盘了一些,希望对大家有用~ 接口测试的重要性,相信不用我多说了。接口测试是现在软件测试工程师一个加分项。因为很多朋友一开始做了几年的软件测试都是在做

    2024年02月04日
    浏览(38)
  • 【Web项目实战】从零开始学习Web自动化测试:用Python和Selenium实现网站登录功能

    B站首推!2023最详细自动化测试合集,小白皆可掌握,让测试变得简单、快捷、可靠 https://www.bilibili.com/video/BV1ua4y1V7Db 目录 1.环境搭建

    2024年02月06日
    浏览(67)
  • OpenCV颜色识别(所有颜色均可识别)

    欢迎访问我的博客sakuraの绘梨衣 本文中的颜色识别为红色,颜色阈值设置如下: 识别其他颜色可以参考HSV颜色阈值设置进行更改 下面是识别代码,注释很详细: 下面是识别效果:

    2024年02月12日
    浏览(36)
  • 【OpenCV • c++】颜色数据结构与颜色空间转换

    🚀 个人简介:CSDN「 博客新星 」TOP 10 , C/C++ 领域新星创作者 💟 作    者: 锡兰_CC ❣️ 📝 专    栏: 【OpenCV • c++】计算机视觉 🌈 若有帮助,还请 关注➕点赞➕收藏 ,不行的话我再努努力💪💪💪

    2024年02月11日
    浏览(39)
  • 【Opencv小项目 1】Opencv实现简单颜色识别

    Opencv简单颜色识别 Youtube教学视频 BGR HSV颜色模型 一、 BGR 和 HSV 颜色模型 BGR Model BGR模型表示三种颜色通道:红、绿、蓝,采用BGR模型的图像的颜色就是由红绿蓝三种颜色加权和混合而成。 此类模型的缺点显而易见,就是很难去表达一种颜色。比如你修改了如下BGR中的B值,间

    2024年02月09日
    浏览(44)
  • opencv颜色识别

      opencv中的颜色识别模块能够对图像中的颜色进行识别,并且在识别结果中能够显示出具体的颜色。目前 opencv中有以下几种颜色识别方法: 1、直方图均衡化 1、直方图均衡化 直方图均衡化是指将图像的灰度数据转换为一个灰度级排列,并通过计算对数变换,将原图像的灰度

    2024年02月03日
    浏览(39)
  • opencv——颜色识别

    这段时间一直在弄有关机器视觉识别的问题,在比赛中用到了很多关于颜色识别的视觉算法,感觉在开始工作之前还是需要先复习一下颜色识别的相关知识,帮助自己扩展一下优化算法的思维。 一个关于HSV相关应用的文章 顾名思义,就是使用摄像头实时识别出画面对应的颜

    2024年02月09日
    浏览(33)
  • 【OpenCV-颜色空间】

    BGR 就是RGB R和B调换位置。 OpenCV 默认使用BGR

    2024年04月13日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包