IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> OpenCV inRange 函数使用详解 -> 正文阅读

[人工智能]OpenCV inRange 函数使用详解

??????? 本文是 OpenCV图像视觉入门之路的第6篇文章,本人详细的解决了RGB转HSV,HSV通过AI来进行HSV转 inRange() 函数的范围值操作,简单全面的解决了OpenCV对于图像中某个颜色的分析工作,本文通过识别红色区域和蓝色区域来编写示例程序和博客,也讲述了各种操作,例如:RGB转HSV、转换工具、公式转换代码实现、猿如意中ChatGPT的使用、识别红色区域、调整V亮度、调整S饱和度、调整H色调、识别蓝色区域等等操作

??????? AI未来相信会在我们的日常工作中有更高的出现频率,也可以帮助我们提高工作学习效率,目前VSCode中的ChatGPT国内服务器已经停止使用,大家可以下载猿如意体验使用ChatGPT!

本文作者原创,未经允许禁止转载。

OpenCV inRange 函数使用详解目录

1 RGB转HSV

1.1 转换工具

1.2 公式转换

2 代码实现

3 ChatGPT

4 识别红色区域

4.1 红色范围

4.2 V亮度调整

4.3 S饱和度调整

4.4 H色调调整

5 识别蓝色区域

5.1 蓝色范围

5.2 识别蓝色

5.3 识别蓝色


1 RGB转HSV

??????? 最近一直在看OpenCV图像识别相关部分,在看到inRange函数的时候有点头大,主要是HSV色彩区域取某个颜色的HSV值搞得完全蒙了,看别的博客和文章都是一张漏斗图各个取值范围完全懵了。

1.1 转换工具

????????程序员最重要的是解决问题的思路和办法,这里是菜鸟教程的转换工具很方便,也有相应的对照表:

RGB HSV 转换 | 菜鸟工具

1.2 公式转换

rgb 221,0,27 可以转换成 hsv 的格式,具体的方法如下:

首先,我们需要将 rgb 值转换成浮点数,方法是将每个值除以 255。因此,rgb(221,0,27) 可以转换成 (0.8666666666666667, 0.0, 0.10588235294117647)。

然后,我们可以使用以下公式来计算 hsv 值:

h = 色相,s = 饱和度,v = 明度

maxc = max(r, g, b)
minc = min(r, g, b)

if maxc == minc:
h = 0
elif maxc == r:
h = 60 * ((g - b) / (maxc - minc))
elif maxc == g:
h = 60 * (2 + (b - r) / (maxc - minc))
else:
h = 60 * (4 + (r - g) / (maxc - minc))

if h < 0:
h += 360

s = 0 if maxc == 0 else (1 - minc / maxc)
v = maxc

所以,rgb(221,0,27) 可以转换成 hsv(348.57142857142856, 1.0, 0.8666666666666667)。

注意:在计算 hsv 值时,色相 h 的单位是角度,饱和度 s 和明度 v 的单位都是百分比,它们的取值范围分别是 0 到 360、0 到 1 和 0 到 1。

2 代码实现

import cv2
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np

# 按间距中的绿色按钮以运行脚本。
if __name__ == '__main__':
    image = cv2.imread('D:/Jupyter_Notebooks/3.png')

    # 从RGB色彩空间转换到HSV色彩空间
    hsv = cv2.cvtColor(image, cv2.COLOR_RGB2HSV)

    # 颜色范围下限
    lower_threshold = np.array([110, 254, 220])
    # 颜色范围上限
    upper_threshold = np.array([180, 255, 255])

    # 使用inRange函数检测颜色
    mask = cv2.inRange(hsv, lower_threshold, upper_threshold)

    # 对原图像和掩码进行位运算
    result = cv2.bitwise_and(image, image, mask=mask)

    # H、S、V范围二:
    cv2.imshow("result", mask)
    cv2.imshow("image", image)

    cv2.waitKey(0)
    cv2.destroyAllWindows()

3 ChatGPT

??????? 这里用到了ChatGPT,很感谢猿如意工具能集成ChatGPT并且目前还可以使用(VSCode 国内版的ChatGPT已经无法连接),面向AI编程未来需要学会。

4 识别红色区域

??????? 我这里在桌面截取了一部分应用识别出RGB红色的颜色是221,0,27,我先在菜鸟教程 RGB转HSV颜色后问了AI HSV转RGB它回答 H 0-180 S、V 0-255

4.1 红色范围

??????? 我们主要想识别 网易云 和 有道 的红色颜色,这个不理想所以需要调整取值范围,

    # 颜色范围下限
    lower_threshold = np.array([0, 255, 255])
    # 颜色范围上限
    upper_threshold = np.array([180, 255, 255])

4.2 V亮度调整

????????因为我们这个颜色是取的网易云的所以要想同时看到有道还需要调整 S饱和度

    # 颜色范围下限
    lower_threshold = np.array([0, 255, 200])
    # 颜色范围上限
    upper_threshold = np.array([180, 255, 255])

4.3 S饱和度调整

??????? 我们V和S值都调整完了,发现火绒的颜色也在取值范围内,所以现在需要调整H的范围将火绒的黄红色去掉

    # 颜色范围下限
    lower_threshold = np.array([0, 254, 200])
    # 颜色范围上限
    upper_threshold = np.array([180, 255, 255])

4.4 H色调调整

??????? 可以发现现在较为完美的实现了 有道 网易云 红色区域的识别。

    # 颜色范围下限
    lower_threshold = np.array([120, 254, 200])
    # 颜色范围上限
    upper_threshold = np.array([180, 255, 255])

5 识别蓝色区域

??????? 识别腾讯会议 蓝色颜色范围是RGB(3,131,254),通过转HSV得出 0.5817,0.9882,0.9961 ChatGPT 转换

5.1 蓝色范围

??????? 我们主要想识别 腾讯会议和 腾讯微云。
?

    # 颜色范围下限
    lower_threshold = np.array([104, 250, 250])
    # 颜色范围上限
    upper_threshold = np.array([105, 255, 255])

5.2 识别蓝色

??????? 经过调整可以看到腾讯会议 和部分 ToDesk 颜色有一样的区域不过都过滤出来了,可以通过ROI截取功能截取掉多余的部分。

OpenCV ROI截取 、设置、保存_双子座断点的博客-CSDN博客_opencv截取roi

    # 颜色范围下限    210
    lower_threshold = np.array([10, 250, 252])
    # 颜色范围上限
    upper_threshold = np.array([20, 255, 255])

5.3 识别蓝色

??????? 可以看到最终识别的掉过还是可以的部分杂点可以过滤一下

    # 颜色范围下限    210
    lower_threshold = np.array([10, 210, 255])
    # 颜色范围上限
    upper_threshold = np.array([20, 215, 255])

?

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-12-25 11:10:19  更:2022-12-25 11:13:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 16:40:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码