人工智能计算机视觉先锋——OpenCv 的颜色检测

news2024/12/24 9:57:46

红色

在计算机的世界里,只有 0 或者1,如何让计算机认识颜色是计算机视觉工作者首先需要考虑的事情,我们知道整个世界的颜色虽然五彩缤纷,但是都是3种原色彩合成的(R G B),有了(R G B)三源色,便可以通过调节不同的颜色比例来达到其他颜色的效果。

在计算机的世界里面,我们定义了(R G B)三源色的像素都在(0-255之间),通过配置这些数字,便可以显示不同的色彩

首先定义一个数组colist:

import numpy as np
import cv2
image = cv2.imread("11.jpg")

colist = [
	([17, 15, 100], [50, 56, 200]),
	([86, 31, 4], [220, 88, 50]),
	([25, 146, 190]	, [62, 174, 250]),
	([103, 86, 65], [145, 133, 128])
]

在RGB色彩空间,当然opencv是在BGR的空间,定义了四种不同颜色的像素,同时代表了R G B ,gray

在这里,我们说图像中所有具有R> = 100G> = 15B> = 17以及R <= 200G<= 56B <= 50的像素将被视为 红色,

具有R> = 4G> = 31B> = 86以及R <= 50G<= 88B <= 220的像素将被视为绿色

具有R> = 190G> = 146B> = 25以及R <= 250G<= 174B <= 62的像素将被视为黄色

具有R> = 65G> = 86B> = 103以及R <= 128G<= 133B <= 145的像素将被视为灰色

有了这些颜色的定义,我们便可以使用上下限的颜色数据,对图片中的颜色进行检测,

for (lower, upper) in colist:
	lower = np.array(lower, dtype = "uint8")
	upper = np.array(upper, dtype = "uint8")
	mask = cv2.inRange(image, lower, upper)
	output = cv2.bitwise_and(image, image, mask = mask)
	cv2.imshow("images", np.hstack([image, output]))
	cv2.waitKey(0)

首先使用cv2.inRange(image, lower, upper)函数进行图片颜色的筛选

mask = cv2.inRange(image, lower, upper) 
函数参数有三个
第一个参数:image指的是原图

第二个参数:lower指的是图像中低于这个lower的值,图像值变为0

第三个参数:upper指的是图像中高于这个upper的值,图像值变为0

而在lower~upper之间的值变成255

黄色

按照红色为例:通过以上函数的筛选,不是红色区域的都被置为0,而红色区域都被置为255

经过以上步骤,mask便是一个黑白的照片,其中不是红色的区域为黑色,红色区域为白色

然后使用cv2.bitwise_and函数对图片进行与操作

cv2.bitwise_and()是对二进制数据进行“与”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“与”操作,1&1=1,1&0=0,0&1=0,0&0=0

利用掩膜(mask)进行“与”操作,即掩膜图像白色区域是对需要处理图像像素的保留,黑色区域是对需要处理图像像素的剔除

这样我们便可以删除了除红色区域以外的其他颜色,保留了红色,当然其他颜色具有类似的原理

代码截图

最后我们显示一下图片中的颜色

绿色

当然你也可以使用L*a*b颜色空间,或者hsv颜色空间,什么叫L*a*b颜色空间,或者hsv颜色空间

python神经网络一键格式化黑白视频为彩色视频

python神经网络一键转变黑白照片为彩色照片

以上2篇文章主要介绍了lab空间的颜色使用

hsv颜色空间的使用,可以参考小编的专栏《打造属于自己的天眼目标追踪系统》中的颜色追踪

更多transformer,VIT,swin tranformer
参考头条号:人工智能研究所
v号:启示AI科技

 动画详解transformer  在线教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1987249.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言 | Leetcode C语言题解之第327题区间和的个数

题目&#xff1a; 题解&#xff1a; #define FATHER_NODE(i) (0 (i) ? -1 : ((i) - 1 >> 1)) #define LEFT_NODE(i) (((i) << 1) 1) #define RIGHT_NODE(i) (((i) << 1) 2)/* 优先队列&#xff08;小根堆&#xff09;。 */ typedef s…

数字人解决方案——音频驱动机器人

音频集成 机器人 标志着 人工智能&#xff08;AI&#xff09;。 想象一下&#xff0c;机器人可以通过视觉和听觉导航并与周围环境互动。音频驱动的机器人使这成为可能&#xff0c;提高了它们更高效、更直观地执行任务的能力。这一发展可能会影响到各个领域&#xff0c;包括家庭…

解决PermissionError: [Errno 13] Permission denied: “xx“报错

这个报错我是使用 shutil.copy(src_file, dst_file) 语句产生的&#xff0c;因此有些问题我会围绕此句代码来进行解决&#xff0c;如果有更好的建议&#xff0c;欢迎积极留言。 目录 1.路径拼写错误&#xff0c;建议使用绝对路径 2.此文件正在使用&#xff0c;关闭当前打开的…

vba 保存word里面的图片_1分钟批量处理100张图片,有Word在

天下苦Word久矣&#xff01;Word不仅是个码字工具&#xff0c;还是个排版工具&#xff0c;而Word在排版方面经常遇到的问题&#xff0c;恐怕说个三天三夜都说不完&#xff01; 好不容易做完了100页的活动方案&#xff0c;交到处女座上司那里&#xff0c;他告诉我&#xff1a;“…

调用azure的npm实现outlook_api模拟查看邮件、发送邮件(实现web版接受outlook邮件第一步)

文章目录 ⭐前言⭐注册azure应用&#x1f496;添加权限 ⭐调用npm 实现收发邮件&#x1f496;安装依赖&#x1f496;创建appSettings.js 放置密钥&#x1f496;创建graphHelper.js封装功能&#x1f496;主文件index.js 对外暴露&#x1f496;效果 ⭐结束 ⭐前言 大家好&#x…

我的cesium for UE踩坑之旅(蓝图、UI创建)

我的小小历程 过程创建对应目录&#xff0c;并将要用到的图片、资源放入对应目录下内容浏览器 窗口中右键&#xff0c;创建一个控件蓝图&#xff0c;用来编辑界面UI绘制画布面板&#xff08;canvas&#xff09;调整整体布局加入对应的控件将UI加入到关卡中 备注搜索不到 Add To…

【原创】简易学生成绩查询系统Excel版

简易学生成绩查询系统通常是为了方便学校、教师和学生能够快速查询和管理成绩而设计的一种工具。从之前提供的信息来看&#xff0c;我们可以总结出简易学生成绩查询系统的一些常见功能&#xff1a; ### 易查分成绩查询系统功能特点&#xff1a; - **成绩导入与管理**&#xff…

Spark_获取id对应日期的所在月份的天数完整指南

开发背景 前段时间有一个开发需求的一小块用到了这&#xff0c;是一个利用率的计算。规则是某id下的近半年的值的小时利用率。 计算规则是某值除以近半年 天数以及24h,但是月份里面数据有空值&#xff0c;所以要计算一下id对应的月份的天数&#xff0c;并且过滤掉数据有空值的天…

Azure openai connection with javascript

题意&#xff1a;使用JavaScript与Azure OpenAI进行连接 问题背景&#xff1a; I have created my chatbot with javascript and used open ai. I need to change it to azure open ai but can not find the connection details for javascript. This is how i connect with p…

十九、虚拟机VMware Workstation(CentOSDebian)的安装

目录 &#x1f33b;&#x1f33b; 一、安装 VMware Workstation1.1 安装 VMware Workstation1.2 虚拟机上安装 CentOS1.3 虚拟机安装 Debian 二、配置Debian方便第三方工具远程连接2.1 配置debian2.2 安装远程SSH工具并连接 一、安装 VMware Workstation 官网下载 本地资源库…

端到端自动驾驶:终局还是误区?

近年来&#xff0c;端到端自动驾驶技术成为了汽车行业的热议话题。尤其是在2024年&#xff0c;各家新兴车企纷纷打出端到端的旗号&#xff0c;似乎谁没有搞端到端&#xff0c;就会被市场淘汰。然而&#xff0c;端到端自动驾驶真的是自动驾驶技术的终局吗&#xff1f;本文将深入…

使用QML的ListView自制树形结构图TreeView

背景 感觉QML自带的TreeView不是很好用&#xff0c;用在文件路径树形结构比较多&#xff0c;但是想用在自己数据里&#xff0c;就不太方便了&#xff0c;所以自己做一个。 用‘ListView里迭代ListView’的方法&#xff0c;制作树形结构&#xff0c;成果图&#xff1a; 代码…

尚硅谷谷粒商城项目笔记——四、使用docker安装redis【电脑CPU:AMD】

四、使用docker安装redis 注意&#xff1a; 因为电脑是AMD芯片&#xff0c;自己知识储备不够&#xff0c;无法保证和课程中用到的环境一样&#xff0c;所以环境都是自己根据适应硬件软件环境重新配置的&#xff0c;这里的虚拟机使用的是VMware。 在解决了 Docker 安装的问题之…

app逆向抓包技巧:SSL Pinning检测绕过

本篇博客旨在记录学习过程&#xff0c;不可用于商用等其它途径 场景 在charles抓包下&#xff0c;某斑马app在注册时发现点击登录毫无反应&#xff0c;看抓包结果提示SSL handshake with client failed&#xff0c;确定是触发了SSL/TLS Pinning&#xff08;证书锁定&#xff…

Flutter 正在迁移到 Swift Package Manager ,未来会弃用 CocoaPods 吗?

什么是 Swift Package Manager &#xff1f;其实 Swift Package Manager (SwiftPM) 出现已经挺长一段时间了&#xff0c;我记得第一次听说 SwiftPM 的时候&#xff0c;应该还是在 2016 年&#xff0c;那时候 Swift 3 刚发布&#xff0c;不过正式出场应该还是在 2018 年的 Apple…

【研发日记】嵌入式处理器技能解锁(二)——TI C2000 DSP的SCI(串口)通信

文章目录 前言 背景介绍 SCI通信 Transmitter Receiver SCI中断 分析和应用 总结 参考资料 前言 见《【研发日记】嵌入式处理器技能解锁(一)——多任务异步执行调度的三种方法》 背景介绍 近期使用TI C2000 DSP做的一个嵌入式系统开发项目中&#xff0c;在使用它的SCI&…

缓存异常:缓存雪崩、击穿、穿透

缓存异常&#xff1a;缓存雪崩、击穿、穿透 缓存雪崩 定义 大量的应用请求无法在 Redis 缓存中进行处理&#xff0c;会将这些请求发送到数据库&#xff0c;导致数据库的压力激增&#xff0c;是发生在大量数据同时失效的场景下 原因 1. 缓存中有大量数据同时过期&#xff0…

常见中间件漏洞复现之【Apache】!

CVE-2021-41773 Apache HTTP Server 路径穿越漏洞 漏洞简介 该漏洞是由于Apache HTTP Server 2.4.49版本存在⽬录穿越漏洞,在路径穿越⽬录 <Directory/>Require all granted</Directory>允许被访问的的情况下&#xff08;默认开启&#xff09;&#xff0c;攻击者…

【机器人学】6-4.六自由度机器人运动学参数辨识-机器人精度验证【附MATLAB代码】

前言 前两个章节以及完成了机器人参数辨识。 【机器人学】6-1.六自由度机器人运动学参数辨识-辨识数学模型的建立 【机器人学】6-2.六自由度机器人运动学参数辨识-优化方法求解辨识参数 标定了工具端、基座以及机器人本身的DH参数。那么我们的机器人精度如何呢&#xff1f;机…

实操: 如何在AirBox上跑Stable Diffusion 3

以下文章来源于Radxa &#xff0c;作者瑞莎 Stable Diffusion 3 Medium 是一种多模态扩散变换器 (MMDiT) 文本到图像模型&#xff0c;在图像质量、排版、复杂提示理解和资源效率方面具有显著提升的性能。 目前瑞莎团队使用 Stable Diffusion 3 Medium 开源模型&#xff0c;通过…