OpenCV识别图片颜色并绘制轮廓

news/2024/12/19 0:44:28/

一、原理

步骤

  • 读取图像
  • 将图像从 RGB 转换为 HSV 颜色空间
  • 根据设定的颜色范围进行掩模处理,得到目标颜色的区域。
  • 查找轮廓
  • 在原图上绘制轮廓

二、代码

import cv2
import numpy as np# 1输入图片
img=cv2.imread('./8.png')
img=cv2.resize(img,(0,0),fx=0.7,fy=0.7)# 2识别颜色,转换HSV颜色空间
img_hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)# 3设定要识别的颜色范围,并利用inrange找到该范围
hsv_min=np.array([26,43,46])
hsv_max=np.array([34,255,255])
img_mask=cv2.inRange(img_hsv,hsv_min,hsv_max)# 4进行滤波
img_median_blur=cv2.medianBlur(img_mask,3)# 5 进行形态学变换,先腐蚀再膨胀
kernal=cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(5,5))
img_e=cv2.erode(img_median_blur,kernal)
img_d=cv2.dilate(img_e,kernal)# 6 寻找轮廓
contours,hierarchy=cv2.findContours(img_d,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)# 7 for循环寻找轮廓,通过面积筛选出你想要的轮廓,绘制轮廓
img_copy = img.copy()
for i in contours:if 200<cv2.contourArea(i)<2000000:cv2.drawContours(img_copy,[i],0,(0, 0, 255),2)else:continue
# 8 输出图片
cv2.imshow('img',img_copy)
cv2.waitKey(0)

三、效果图

 


http://www.ppmy.cn/news/1556245.html

相关文章

【Python爬虫系列】_032.Scrapy_全站爬取

课 程 推 荐我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)教程合集 👈👈

Redis 存储断点续传文件状态的最佳实践

目录 1. Redis 中存储文件上传状态使用 Hash 存储文件状态存储分块上传状态使用 TTL 进行状态过期管理 2. Redis 与数据库保持一致方法 1&#xff1a;定期同步方法 2&#xff1a;实时同步方法 3&#xff1a;双写机制方法 4&#xff1a;系统重启后的恢复 3. 一致性保障4. 总结5.…

Redis集合运算的应用场景

集合并集&#xff08;Union&#xff09;的应用场景 标签系统 应用场景&#xff1a;假设有一个社交平台&#xff0c;用户可以给内容打上不同的标签。使用Redis集合来存储每个标签下的内容ID。使用并集&#xff1a;当用户想要查看多个标签下的内容时&#xff0c;可以使用 SUNION …

揭开开源神秘面纱

在当今的技术领域&#xff0c;“开源” 这个词越来越频繁地出现在我们的视野中。但是&#xff0c;你真的了解开源的相关定义吗&#xff1f;今天&#xff0c;我们就来深入剖析一下开源这个神秘而又充满魅力的概念。 开源 开源&#xff08;Open Source&#xff09;是一种软件开…

[Unity Shader]【游戏开发】【图形渲染】Unity Shader的结构3-深入理解 Fallback 指令及其应用

在 Unity Shader 中,Fallback 指令是一项非常重要的功能,帮助开发者提供一个“后备方案”以保证在某些硬件环境下,Shader 仍能运行。它类似于一种错误恢复机制,当当前的 SubShader 在目标硬件上无法执行时,Fallback 会自动切换到一个较为简单的备用 Shader。本文将详细介绍…

java-使用druid sqlparser将SQL DDL脚本转化为自定义的java对象

java-使用druid sqlparser将SQL DDL脚本转化为自定义的java对象 一、引言二、环境三、待解析的DDL四、解析后的对象结构五、完整的UT类六、控制台输出总结 一、引言 在日常开发中&#xff0c;有些需要对SQL进行解析的场景&#xff0c;比如读取表结构信息&#xff0c;生成文档、…

APP测试中ios和androis的区别,有哪些注意点

一、运行机制不同 IOS采用的是沙盒运行机制&#xff0c;安卓采用的是虚拟机运行机制。 1、沙盒机制&#xff1a; 概念&#xff1a;沙盒是一种安全机制&#xff0c;用于防止不同应用之间互相访问 作用&#xff1a;就是存储数据&#xff0c;每个沙盒就相当于每个每个应用的系…

Mac上使用ln指令创建软链接、硬链接

在Mac、Linux和Unix系统中&#xff0c;软连接&#xff08;Symbolic Link&#xff09;和硬连接&#xff08;Hard Link&#xff09;是两种不同的文件链接方式。它们的主要区别如下&#xff1a; 区别&#xff1a; 硬连接&#xff1a; 不能跨文件系统。不能链接目录&#xff08;为…