opencv识别颜色

  1. 导入必要的库:首先,需要导入 OpenCV 库和其他可能用到的库,如 NumPy。
  2. 加载图像:使用cv2.imread函数加载包含多种颜色的图像。
  3. 定义颜色范围:在 HSV 颜色空间中定义要识别的颜色范围。可以使用颜色选择器工具来确定所需颜色的 HSV 值范围。
  4. 颜色识别函数:创建一个颜色识别函数,用于在图像中识别指定颜色的区域。
  5. 图像处理:在颜色识别函数中,进行图像处理操作,如转换颜色空间、二值化、膨胀、检测轮廓等。
  6. 绘制轮廓和结果:根据识别到的颜色区域,绘制轮廓、框选目标,并显示结果。

以下是一个使用 OpenCV 进行颜色识别的示例代码

import cv2
import numpy as npdef color_identify(image, color_range):# 转换为 HSV 颜色模型hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)# 二值化处理,表示 HSV 中颜色的范围mask = cv2.inRange(hsv, color_range[0], color_range[1])# 膨胀操作kernel = np.ones((5, 5), dtype=np.uint8)dilate = cv2.dilate(mask, kernel, iterations=1)# 检测图像中轮廓的函数cnts, hierarchy = cv2.findContours(dilate, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)# 判断是否有轮廓if len(cnts) == 0:# 没有即显示原图cv2.imshow("color_identify", image)return# 返回最大面积的轮廓max_cnt = max(cnts, key=cv2.contourArea)# 用于在图像中绘制轮廓cv2.drawContours(image, max_cnt, -1, (0, 0, 255), 2)# 用于计算一个点集的最小边界矩形(x, y, w, h) = cv2.boundingRect(max_cnt)# 将目标框起来cv2.rectangle(image, (x, y), (x+w, y+h), (0, 0, 255), 3)# 在目标的中间画一个小圈cv2.circle(image, (x + (w//2), y + (h//2)), 6, (0, 0, 255), 2)# 打印出目标中点的坐标print("x + w:", x + (w//2), "y + h:", y + (h//2))cv2.imshow("color_identify", image)if __name__ == "__main__":# 打开摄像头cap = cv2.VideoCapture(0)# 设置摄像头参数cap.set(cv2.CAP_PROP_FRAME_WIDTH, 480)cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)cap.set(cv2.CAP_PROP_FPS, 100)while True:# 循环读取每一帧flag, frame = cap.read()# 将图像翻转过来frame = cv2.flip(frame, 1)# 如果读取失败if not flag:print("Camera error!")break# 调用颜色识别函数color_identify(frame, [(0, 150, 150), (10, 255, 255)])  # 识别红色# 等待用户按下‘q'键,如果按下则退出循环sun = cv2.waitKey(1)if sun == ord('q'):break# 关闭摄像头,解除程序占用摄像头cap.release()# cv2 把所有打开的窗口关闭掉cv2.destroyAllWindows()

定义了一个color_identify函数,它接受图像和颜色范围作为参数。在函数内部,首先将图像转换为 HSV 颜色空间,然后使用cv2.inRange函数进行二值化处理,得到指定颜色范围内的像素。接下来,进行膨胀操作和轮廓检测,找到最大面积的轮廓,并绘制轮廓、框选目标和显示结果。

if __name__ == "__main__":部分,打开摄像头并设置参数,然后在循环中读取每一帧图像,调用color_identify函数进行颜色识别。用户按下q键时,退出循环并关闭摄像头。

请注意,这只是一个简单的颜色识别示例代码,实际应用中可能需要根据具体情况进行更多的图像处理和优化。此外,颜色范围的选择可能需要根据实际图像进行调整。

 

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

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

相关文章

如何修改外接移动硬盘的区号

- 问题介绍 当电脑自身内存不够使用的时候,使用外接硬盘扩展内存是一个不错的选择。但是当使用的外接硬盘数量过多的时候,会出现分配硬盘的区号变动的情况,这种情况下会极大的影响使用的体验情况。可以通过以下步骤手动调整恢复 - 配置 版本…

python-16-零基础学python 用类实现登录次数的记录

学习内容:《python编程:从入门到实践》第二版 知识点: 类,特殊函数,编写方法,创建实例,用方法修改类的值 练习内容: 练习9-5:尝试登录次数 在为完成练习9-3而编写的…

功能测试【测试用例模板、Bug模板、手机App测试】

功能测试 Day01 web项目环境与测试流程、业务流程测试一、【了解】web项目环境说明1.1 环境的定义:项目运行所需要的所有的软件和硬件组合1.2 环境(服务器)的组成:操作系统数据库web应用程序项目代码1.3 面试题:你们公司有几套环境&#xff1…

go编程中接口(interface)用法

1、编程中多态的概念 如果熟悉C编程,就会知道C中可以通过虚函数来实现多态 ,Java等面向对象的语言也有类似的特性。那么是多态呢? 多态是面向对象编程中的一个基本概念&am…

09-axios在Vue中的导入与配置

09-axios 前言首先简单了解什么是Axios?以上完成后就可以使用了 前言 我们接着上一篇文章 08-路由地址的数据获取 来讲。 下一篇文章 10-vuex在Vue中的导入与配置 首先简单了解什么是Axios? Axios是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端…

百度文心智能体,创建属于自己的智能体应用

百度文心智能体平台为你开启。百度文心智能体平台,创建属于自己的智能体应用。百度文心智能体平台是百度旗下的智能AI平台,集成了先进的自然语言处理技术和人工智能技术,可以用来创建属于自己的智能体应用,访问官网链接&#xff1…

docker基础使用教程

1.准备工作 例子:工程在docker_test 生成requirements.txt文件命令:(使用参考链接2) pip list --formatfreeze > requirements.txt 参考链接1: 安装pipreqs可能比较困难 python 项目自动生成环境配置文件require…

通俗解释resultType和resultMap的区别

【 1 对于单表而言: 注:以下都是摘抄过来的,做了让自己更能理解的版本 如果数据库返回结果的列名和要封装的实体的属性名完全一致的话用 resultType 属性 如果数据库返回结果的列名(起了别名)和要封装的实体的属性名…

ArcGIS批量投影转换的妙用(地理坐标系转换为平面坐标系)

​ 点击下方全系列课程学习 点击学习—>ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放 这次文章我们来介绍一下,如何巧妙用要素数据集来实现要素的批量投影。不需要ArcGIS的模型构建器与解决。 例如,有多个要素要将CGCS_2000地理坐标系投…

D触发器(D Flip-Flop)与D锁存器(D Latch)

1 基础概念 我们先来简单回顾一下D触发器(D flip-flop)和D锁存器(D latch)的概念,以及它们在数字电路中的作用。 1.1 D触发器(D Flip-Flop) D触发器是一种数字存储器件,它在时钟信号…

【VS Code 插件】SQLite 可视化插件

VScode 插件分享篇之sqlite可视化工具 项目经常用到SQLite这个轻量型数据库,于是乎,就想着找一个可视化工具,但是我有时候只是想方便预览数据 表,又不想安装额外的程序,那么这款插件很适合你。 用习惯VS Code的小伙伴…

HarmonyOS Next 系列之沉浸式状态实现的多种方式(七)

系列文章目录 HarmonyOS Next 系列之省市区弹窗选择器实现(一) HarmonyOS Next 系列之验证码输入组件实现(二) HarmonyOS Next 系列之底部标签栏TabBar实现(三) HarmonyOS Next 系列之HTTP请求封装和Token…

Win11 删除文件时提示“找不到该项目,请重试”的解决办法

1、Win R 打开运行窗口,输入 notepad 并回车打开文本文档(记事本)软件,如下图: 2、在文本文档(记事本)软件中复制粘贴以下代码,如下图: del /f /a /q \\?\%1 rd /s /q \\?\%1或DEL /F /A /Q \\?\%1 RD /S /Q \\?…

红队内网攻防渗透:内网渗透之内网对抗:网络通讯篇防火墙组策略入站和出站规则单层双层C2正反向上线解决方案

红队内网攻防渗透 1. 内网网络通讯1.1 防火墙策略-入站规则&出站规则&自定义1.1.1 防火墙默认入站&出站策略1.1.2 防火墙自定义入站&出站策略1.1.3 内网域防火墙同步策略1.2 防火墙限制1.2.1 防火墙限制端口1.2.2 防火墙限制协议1.2.2.1 防火墙协议入站限制1.2…

html做一个分组散点图图的软件

在HTML中创建一个分组散点图,可以结合JavaScript库如D3.js或Plotly.js来实现。这些库提供了强大的数据可视化功能,易于集成和使用。下面是一个使用Plotly.js创建分组散点图的示例: 要添加文件上传功能,可以让用户上传包含数据的文…

昇思25天学习打卡营第4天|网络构建|函数式自动微分

学AI还能赢奖品?每天30分钟,25天打通AI任督二脉 (qq.com) 网络构建 神经网络模型是由神经网络层和Tensor操作构成的,mindspore.nn提供了常见神经网络层的实现,在MindSpore中,Cell类是构建所有网络的基类,也…

基于uni-app和图鸟UI的智慧农业综合管控平台小程序技术实践

摘要: 随着信息化技术的飞速发展,智慧农业已成为推动农业现代化、提升农业生产效率的重要手段。本文介绍了一款基于uni-app框架和图鸟UI设计的智慧农业综合管控平台小程序,该平台整合了传感器控制、农业数据监测、设施管控、农业新闻传播以及…

论文:R语言数据分析之机器学习论文

欢迎大家关注全网生信学习者系列: WX公zhong号:生信学习者Xiao hong书:生信学习者知hu:生信学习者CDSN:生信学习者2 一、研究背景 全球范围内,乳腺癌是导致癌症发病率和死亡率的主要疾病之一。根据2018年…

爬虫经典案例之爬取豆瓣电影Top250(方法二)

在上一篇文章的基础上,改进了代码质量,增加了多个正则表达式匹配,但同事也增加了程序执行的耗时。 from bs4 import BeautifulSoup import requests import time import re from random import randint import pandas as pdurl_list [https…

【MySQL 的三大日志的作用】

在管理MySQL数据库时,了解和区分数据库使用的三大日志类型至关重要。这些日志对于确保数据的完整性、提供恢复机制以及维持数据库的稳定性发挥着关键作用。最主要还是小豆前段时间去参加面试被问到了这些内容,下面将详细讨论Redo Log、Binlog和Undo Log的…