当前位置: 首页 > news >正文

颜色检测python项目

 注意:本文引用自专业人工智能社区Venus AI

更多AI知识请参考原站 ([www.aideeplearning.cn])

什么是颜色检测?

颜色检测是检测任何颜色名称的过程。很简单不是吗?嗯,对于人类来说,这是一项极其简单的任务,但对于计算机来说,这并不简单。人眼和大脑协同工作,将光转化为颜色。我们眼睛中的光感受器将信号传输到大脑。然后我们的大脑就会识别颜色。从孩提时代起,我们就用颜色名称来映射某些光。我们将使用大致相同的策略来检测颜色名称。项目的动态效果展示如下,请点击观看:

关于 此Python 项目

在此颜色检测 Python 项目中,我们将构建一个应用程序,通过该应用程序,您可以通过单击颜色自动获取颜色名称。为此,我们将有一个包含颜色名称及其值的数据文件。然后我们将计算每种颜色的距离并找到最短的。

数据集

颜色由3种原色组成;红色、绿色和蓝色。在计算机中,我们将每个颜色值定义在0到255的范围内。那么我们可以用多少种方式来定义颜色呢?答案是 256*256*256 = 16,581,375。大约有 1650 万种不同的颜色表示方法。在我们的数据集中,我们需要将每种颜色的值与其相应的名称进行映射。但不用担心,我们不需要映射所有值。我们将使用包含 RGB 值及其相应名称的数据集。我们数据集的 CSV 文件取自此链接:

颜色数据集

color.csv 文件包含 865 种颜色名称及其 RGB 和十六进制值。

先决条件

在开始使用这个带有源代码的Python项目之前,您应该熟悉Python的计算机视觉库,即OpenCV和Pandas。

OpenCV、Pandas 和 numpy 是该项目在 Python 中所需的 Python 包。要安装它们,只需在终端中运行以下 pip 命令:

pip install opencv-python numpy pandas

在Python中构建项目的步骤——颜色检测

1. 用pandas读取CSV文件

当我们需要对 CSV 等数据文件执行各种操作时,pandas 库非常有用。pd.read_csv()读取 CSV 文件并将其加载到 pandas DataFrame 中。我们为每一列分配了一个名称,以便于访问。

#Reading csv file with pandas and giving names to each column
index=["color","color_name","hex","R","G","B"]
csv = pd.read_csv('colors.csv', names=index, header=None)

2.在窗口上设置鼠标回调事件

首先,我们创建了一个窗口,其中将显示输入图像。然后,我们设置一个回调函数,当鼠标事件发生时将调用该函数。

cv2.namedWindow('image')
cv2.setMouseCallback('image',draw_function)

通过这些行,我们将窗口命名为“image”,并设置一个回调函数,每当鼠标事件发生时,该函数都会调用draw_function() 。

3.创建draw_function

它将计算我们双击的像素的 RGB 值。函数参数有事件名称、鼠标位置的 (x,y) 坐标等。在函数中,我们检查事件是否双击,然后计算并设置 r、g、b 值以及 x,鼠标的 y 位置。

def draw_function(event, x,y,flags,param):if event == cv2.EVENT_LBUTTONDBLCLK:global b,g,r,xpos,ypos, clickedclicked = Truexpos = xypos = yb,g,r = img[y,x]b = int(b)g = int(g)r = int(r)

4. 计算距离得到颜色名称

我们有 r、g 和 b 值。现在,我们需要另一个函数来返回 RGB 值的颜色名称。为了获得颜色名称,我们计算距离(d),它告诉我们与颜色的接近程度,并选择距离最小的颜色。

我们的距离是通过以下公式计算的:

d = abs(Red – ithRedColor) + (Green – ithGreenColor) + (Blue – ithBlueColor)

def getColorName(R,G,B):minimum = 10000for i in range(len(csv)):d = abs(R- int(csv.loc[i,"R"])) + abs(G- int(csv.loc[i,"G"]))+ abs(B- int(csv.loc[i,"B"]))if(d<=minimum):minimum = dcname = csv.loc[i,"color_name"]return cname

5. 在窗口上显示图像

每当发生双击事件时,都会更新窗口上的颜色名称和 RGB 值。

使用cv2.imshow()函数,我们在窗口上绘制图像。当用户双击窗口时,我们绘制一个矩形并获取颜色名称,以使用cv2.rectanglecv2.putText()函数在窗口上绘制文本。

6. 运行Python文件

运行 Python 文件即可。

python <strong>Color_detection.py</strong>

结果展示如下:

图片[2]-颜色检测python项目-VenusAI

下载并解压zip文件

其中包含全部的项目文件,项目文件夹包含3个文件:

  • Color_detection.py – 我们项目的主要源代码。
  • Colorpic.jpg – 用于实验的示例图像。
  • Colors.csv – 包含我们的数据集的文件。

完整代码请参考源网站:https://www.aideeplearning.cn/1691-2/

相关文章:

  • xlsx.js读取本地文件,按行转成数组数据
  • 手机App防沉迷系统C卷(JavaPythonC++Node.jsC语言)
  • UE5.1_TimeLine
  • yudao-cloud 学习笔记
  • web服务,C/S框架,单设备登陆实现方案
  • C++中实现String类
  • mysqld.exe运行时,提示缺少msvcr100.dll,msvcp100.dll文件,导致mysql安装失败或mysql服务无法启动
  • vue若依自定义权限控制
  • java面试题:为什么 SQL 语句不要过多的 join?
  • 【华为OD机试】智能成绩表【C卷|100分】
  • Liinux——(网络)socket编程
  • Vue3全家桶 - VueRouter - 【3】嵌套路由【children】
  • win10系统在低分辨率显示器显示模糊时
  • 点亮创造力:探索AI大模型开发的无限可能性!
  • python淘宝网页爬虫数据保存到 csv和mysql(selenium)
  • 深入了解以太坊
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • in typeof instanceof ===这些运算符有什么作用
  • JavaScript的使用你知道几种?(上)
  • JAVA之继承和多态
  • node学习系列之简单文件上传
  • PAT A1092
  • 半理解系列--Promise的进化史
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 二维平面内的碰撞检测【一】
  • 关于使用markdown的方法(引自CSDN教程)
  • 汉诺塔算法
  • 基于Android乐音识别(2)
  • 跨域
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 微服务框架lagom
  • HanLP分词命名实体提取详解
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • ​水经微图Web1.5.0版即将上线
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #AngularJS#$sce.trustAsResourceUrl
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • (09)Hive——CTE 公共表达式
  • (6)STL算法之转换
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (Git) gitignore基础使用
  • (NSDate) 时间 (time )比较
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (六)vue-router+UI组件库
  • (六)软件测试分工
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (转)大型网站架构演变和知识体系