教你如何用Python检测出图像中的黄色?都在这里!
Posted 满目星辰wwq
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了教你如何用Python检测出图像中的黄色?都在这里!相关的知识,希望对你有一定的参考价值。
首先,这里不搞黄色,只搞学习,希望大家好好学习,争取早日变成大佬,升职加薪、当上总经理、出任CEO、迎娶白富美、走上人生巅峰,想想是不是有点小激动。
等等,别跑偏了,接下来开始学习。
有时我们需要检测出图像中不同颜色的地方,就比如下图中,有很多种颜色,但是我们只想要黄色,那我们应该怎么检测呢
OpenCV中有一个很好的函数,那就是inRange函数,可以将图像中的不同颜色图像根据指定的颜色检测出来。但是在这之前必须将彩色图像转换为HSV图像。
转换HSV图像的函数也在OpenCV中,那就是cvtColor,可以直接将RGB(真实图像其实是BGR顺序)转换为HSV图像。
下面给出HSV的一张表格,不要急,下面就会知道这个表格的作用啦。
inRange
有三个参数,分别是hsv, lower_color, upper_color
,其中:
第一个参数:hsv
指的是转换为HSV格式的图像
第二个参数:lower_color
指的是图像中低于这个lower_color
的值,图像值变为0
第三个参数:upper_color
指的是图像中高于这个upper_color
的值,图像值变为0
注:lower_color
和upper_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_color
和upper_color
分别是上图表格中对应黄色部分的HSV最小最大值。
其中,低于lower_color
和高于upper_color
的值会变成0,介于lower_color
和upper_color
之间的值会变成255。
接下来,看最终结果显示图片,可以很清楚的看到只有黄色部分才是255(白色),其他地方全部变成了0(黑色)。
怎么样?最终是不是检测出来了黄色部分。
你们也可以根据自己喜爱检测出其他颜色部分。
当然,真实场景往往比这更加复杂,这就需要我们根据需要进行微调。
好了,就介绍到这里,欢迎大家进行指正,哪里有问题可以提出。
我是满目星辰wwq,大家可以叫我星辰,一起学习,一起进步,大家都能变成大神!
以上是关于教你如何用Python检测出图像中的黄色?都在这里!的主要内容,如果未能解决你的问题,请参考以下文章