教你如何用Python检测出图像中的黄色?都在这里!

Posted 满目星辰wwq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了教你如何用Python检测出图像中的黄色?都在这里!相关的知识,希望对你有一定的参考价值。

首先,这里不搞黄色,只搞学习,希望大家好好学习,争取早日变成大佬,升职加薪、当上总经理、出任CEO、迎娶白富美、走上人生巅峰,想想是不是有点小激动。
在这里插入图片描述
等等,别跑偏了,接下来开始学习。

有时我们需要检测出图像中不同颜色的地方,就比如下图中,有很多种颜色,但是我们只想要黄色,那我们应该怎么检测呢
在这里插入图片描述
OpenCV中有一个很好的函数,那就是inRange函数,可以将图像中的不同颜色图像根据指定的颜色检测出来。但是在这之前必须将彩色图像转换为HSV图像。

转换HSV图像的函数也在OpenCV中,那就是cvtColor,可以直接将RGB(真实图像其实是BGR顺序)转换为HSV图像。

下面给出HSV的一张表格,不要急,下面就会知道这个表格的作用啦。
HSV表格

inRange有三个参数,分别是hsv, lower_color, upper_color,其中:
第一个参数:hsv指的是转换为HSV格式的图像
第二个参数:lower_color指的是图像中低于这个lower_color的值,图像值变为0
第三个参数:upper_color指的是图像中高于这个upper_color的值,图像值变为0
注:lower_colorupper_color都是有三个值,分别代表了H、S、V(Hue色度,Saturation饱和度,Value 纯度)三个值的最小最大边界。

接下来进行代码演示:

# 导入必要模块
import cv2
import numpy as np

img = cv2.imread("./hough transform/HoughCircleImg/5.jpg")  # 读取图片路径
img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)  # 将BGR图像转换为HSV格式
lower_color = np.array([26, 43, 46])  # 分别对应着HSV中的最小值
upper_color = np.array([34, 255, 255])  # 分别对应着HSV中的最大值
mask = cv2.inRange(img_hsv, lower_color, upper_color)  # inrange函数将根据最小最大HSV值检测出自己想要的颜色部分
cv2.imshow("mask", mask)  # 通过imshow显示
cv2.waitKey(0)  # 等待键盘按下按键退出

上面的lower_colorupper_color分别是上图表格中对应黄色部分的HSV最小最大值。

其中,低于lower_color和高于upper_color的值会变成0,介于lower_colorupper_color之间的值会变成255。

接下来,看最终结果显示图片,可以很清楚的看到只有黄色部分才是255(白色),其他地方全部变成了0(黑色)。
在这里插入图片描述
怎么样?最终是不是检测出来了黄色部分。

你们也可以根据自己喜爱检测出其他颜色部分。

当然,真实场景往往比这更加复杂,这就需要我们根据需要进行微调。

好了,就介绍到这里,欢迎大家进行指正,哪里有问题可以提出。

我是满目星辰wwq,大家可以叫我星辰,一起学习,一起进步,大家都能变成大神!

以上是关于教你如何用Python检测出图像中的黄色?都在这里!的主要内容,如果未能解决你的问题,请参考以下文章

教你如何用Python批量下载自己喜欢听得音乐

大神教你如何用Python爬取手机壁纸,就是这么为所欲为!

万字教你如何用 Python 实现线性规划

教你如何用Python制作花式条形图

万字教你如何用 Python 实现线性规划

手把手教你如何用 OpenCV + Python 实现人脸识别