OpenCV利用HSV颜色区间分离不同物体

需求

当前有个需求是从一个场景中将三个不同的颜色的二维码分离出来,如下图所示。
示例图像
这里有两个思路可以使用

  • 思路一是通过深度学习的方式,训练一个能够识别旋转边界框的模型,但是需要大量的数据进行模型训练,此处缺少训练数据,不太方便执行。
  • 思路二则是直接通过颜色进行分离,找到颜色的区间,通过去骗判断的方式分别分离出三个不同颜色对应的轮廓。

方案

首先,先要找到图像的HSV颜色对应表格,如下所示。
在这里插入图片描述
然后按照读取图像->转化为HSV通道图像->颜色分离的思路编写代码即可,详细的代码如下。

# -*- coding: utf-8 -*-
# @Time    : 2023/5/31 22:59
# @Author  : 肆十二
# @Email   : 3048534499@qq.com
# @File    : demo
# @Software: PyCharmimport numpy as np
import cv2
import os# 参考:https://blog.csdn.net/chenghaoy/article/details/86509950
def get_red(image_path):# 设定颜色HSV范围,假定为红色redLower_1 = np.array([0, 43, 46])redUpper_1 = np.array([10, 255, 255])redLower_2 = np.array([156, 43, 46])redUpper_2 = np.array([180, 255, 255])# 读取图像img = cv2.imread(image_path)# 将图像转化为HSV格式hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)# 去除颜色范围外的其余颜色mask_1 = cv2.inRange(hsv, redLower_1, redUpper_1)mask_2 = cv2.inRange(hsv, redLower_2, redUpper_2)mask = mask_1 + mask_2# mask = cv2.merge([mask_1, mask_2])# mask = cv2.# 二值化操作ret, binary = cv2.threshold(mask, 0, 255, cv2.THRESH_BINARY_INV)cv2.imwrite("results/red.jpg", binary)def get_yellow(image_path):# 设定颜色HSV范围,假定为红色redLower = np.array([26, 43, 46])redUpper = np.array([34, 255, 255])# 读取图像img = cv2.imread(image_path)# 将图像转化为HSV格式hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)# 去除颜色范围外的其余颜色mask = cv2.inRange(hsv, redLower, redUpper)# 二值化操作ret, binary = cv2.threshold(mask, 0, 255, cv2.THRESH_BINARY_INV)cv2.imwrite("results/yellow.jpg", binary)def get_green(image_path):# 设定颜色HSV范围,假定为红色redLower = np.array([35, 43, 46])redUpper = np.array([77, 255, 255])# 读取图像img = cv2.imread(image_path)# img = cv2.medianBlur(img, 5)# 将图像转化为HSV格式hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)# hsv =# 去除颜色范围外的其余颜色mask = cv2.inRange(hsv, redLower, redUpper)# 二值化操作ret, binary = cv2.threshold(mask, 0, 255, cv2.THRESH_BINARY_INV)# img[img==0] =cv2.imwrite("results/green.jpg", binary)if __name__ == '__main__':image_path = "a.jpg"get_red(image_path)get_yellow(image_path)get_green(image_path)

OK在主函数中传入上图,之后在result文件夹下就能生成分离之后的结果,如下所示。

  • 绿色二维码分离结果
    在这里插入图片描述

  • 红色二维码分离结果
    在这里插入图片描述

  • 黄色二维码分离结果
    在这里插入图片描述

总结

很多时候,不需要过于依赖AI,通过传统的图像检测算法也能达到良好的效果,比如今天就通过HSV颜色通道的形式来进行分离,这在工业场景中是非常实用的。

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

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

相关文章

CentOs 安装MySQL

1、拉取安装包 wget --no-check-certificate dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm 成功拉取 2、安装 yum install mysql-community-release-el6-5.noarch.rpm 过程中可能需要你同意一些东西,y 即可 然后稍微检查一下 yum repolist enabled…

基于 OpenCV 的车辆变道检测,计算机视觉+图像处理技术

本期教程我们将和小伙伴们一起研究如何使用计算机视觉和图像处理技术来检测汽车在行驶中时汽车是否在改变车道!大家一定听说过使用 OpenCV 的 haar 级联文件可以检测到面部、眼睛等,但是如果目标是汽车,公共汽车呢? 01. 数据集 …

前端工程注入版本号

文章目录 一、前言二、webpack三、vite四、最后 一、前言 容器化时代,当页面出现问题时,如果你的新版本有可能已经修复了,那样你再排查它就没有意义了。为什么不一定是最新版本呢?一是可能是缓存作祟,二是可能运维成员…

互联网+建筑工地源码,基于微服务+Java+Spring Cloud +Vue+UniApp开发

一、智慧工地概念 智慧工地就是互联网建筑工地,是将互联网的理念和技术引入建筑工地,然后以物联网、移动互联网技术为基础,充分应用BIM、大数据、人工智能、移动通讯、云计算、物联网等信息技术,通过人机交互、感知、决策、执行和…

使用Python自己写了一个Renpy 汉化插件

之前看了很多教程都是Renpy怎么解包、怎么创建翻译文件,对翻译过程没有过多讲解,就根据翻译文件写了一个小程序,如果需要的可以自行下载使用。 使用方法: 1.按照正常unrpa的解包方式renpy进行解包; 2.使用renpy-sdk…

React 的 Suspense 和 ErrorBoundary 这关系也能有?

Suspense 组件想必大家都用过&#xff0c;一般是和 React.lazy 结合用&#xff0c;用来加载一些异步组件。 比如这样一个组件&#xff1a; // src/Aaa.jsx export default function Aaa() {return <div>aaa</div> }就可以在另一个组件里用 lazy Suspense 异步加…

测试开发体系介绍——测试体系介绍-L3

目录&#xff1a; 测试框架体系TDDDDTBDDATDD介绍 测试框架是什么&#xff1f;测试框架的价值&#xff1a;测试框架的收益&#xff1a;常见测试框架类型&#xff1a;TDDBDDBehaviorDrivenDevelopmentATDDAcceptanceTestDrivenDevelopmentMBTModelBasedTestingDDTDataDrivenTes…

案例147:基于微信小程序的酒店管理系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

MFC 视图窗口

目录 视图窗口概述 视图窗口的使用 视图窗口创建流程 命令消息 WM_COMMAND 处理顺序 对象关系 视图窗口概述 作用&#xff1a;提供了一个用于显示数据的窗口 关于视图窗口 视图类是用来展示用户&#xff0c;文档类是用来存储和管理数据视图窗口是覆盖掉框架窗口的客户区…

详解Vue3中的插槽(slot)

本文主要介绍Vue3中的插槽&#xff08;slot&#xff09;。 目录 一、在普通写法中使用插槽&#xff08;slot&#xff09;作用域插槽默认插槽 二、在setup写法中使用插槽&#xff1a;注意事项 在Vue3中&#xff0c;插槽&#xff08;slot&#xff09;是一种用于在父组件中向子组件…

Unity矩阵平移旋转缩放Matrix4x4

Unity矩阵平移旋转缩放Matrix4x4 Unity中的矩阵&#xff08;Matrix4x4&#xff09;创建自定义模型平移矩阵缩放矩阵旋转矩阵 Unity中的矩阵&#xff08;Matrix4x4&#xff09; 最近在研究帧同步定点数物理系统中需要自定义定点数矩阵&#xff0c;所以在这里分享下基础的矩阵案…

蓝牙物联网在智能家居中的应用前景

物联网智能家居系统是应用物联网技术&#xff0c;在传统家居环境下将各种零散无序的电器整合成统一整体&#xff0c;实现家电的全程自动控制&#xff0c;满足用户高效管理需求的一种新型家居模式。 其主要的子系统有家居感知系统、家庭网络系统、智能家居控制管理系统等&#x…

使用教程之【SkyWant.[2304]】路由器操作系统,破解移动【Netkeeper】校园网【小白篇】

许多高校目前饱受Netkeeper认证的痛苦&#xff0c;普通路由器无法使用&#xff0c; 教你利用SkyWant的Netkeeper认证软件来使你的SkyWant路由器顺利认证上网&#xff0c;全宿舍又可以合作共赢了&#xff01; 步骤一&#xff1a;正确连接网线&#xff0c;插电开机 正确连接网…

分布式Session使用步骤

目录 1. 为什么用分布式Session2. Spring-Session使用步骤2-1. 添加依赖2-2. yml配置 1. 为什么用分布式Session 将一个项目部署到多台服务器上时&#xff0c;多台服务器的Tomcat的Session不共享。那么就有可能造成Session数据不一致情况&#xff0c;所以此时就需要使用分布式…

Gateway API

Gateway API 目录 原文链接 https://onedayxyy.cn/docs/GatewayAPI 本节实战 实战名称&#x1f6a9; 实战&#xff1a;Gateway API在istio里的安装及测试-2023.12.23(测试失败) 前言 Gateway API 是由 SIG-NETWORK 社区管理的开源项目&#xff0c;项目地址&#xff1a;http…

nodejs+vue+ElementUi洗衣店订单管理系统4691l

衣服但是找订单的时间太长&#xff0c;体验非常的差。而且对于店家这也很头疼&#xff0c;麻烦的查找订单的方式&#xff0c;让他总是重复着繁琐的步骤&#xff0c;记录的时候也很容易出问题&#xff0c;容易把衣服弄错&#xff0c;再然后就是对于收来的衣服也很麻烦&#xff0…

初识QT(上篇):What Qt

初识QT&#xff08;上篇&#xff09;&#xff1a;What Qt 前言 & 说明前言说明 初识QT1.1 QT的what1. 介绍2. 发展历程3. QT架构的主要内容4.QT的常用模块 1.2 QT的 why1. QT的核心机制 下篇笔记链接 前言 & 说明 前言 前言&#xff1a; 之前说要share的qt相关知识&am…

【AI提示词人物篇】创新艺术未来,让科技改变想象空间

AI 绘画学习难度和练习技巧 学习绘画的技巧 学习能难度&#xff1a; 外貌特征&#xff1a;AI需要学习识别和理解各种外貌特征&#xff0c;如发型、肤色、眼睛颜色等。这可能需要大量的训练数据和复杂的模型架构。 镜头提示&#xff1a;AI需要学习理解不同镜头提示的含义&…

论文笔记--Learning Political Polarization on Social Media Using Neural Networks

论文笔记--Learning Political Polarization on Social Media Using Neural Networks 1. 文章简介2. 文章概括3. 相关工作4. 文章重点技术4.1 Collection of posts4.1.1 数据下载4.1.2 数据预处理4.1.3 统计显著性分析 4.2 Classification of Posts4.3 Polarization of users 5…

SpringMVC:Ajax、拦截器、文件上传、文件下载

文章目录 SpringMVC - 06一、Ajax1. 概述2. Ajax 异步加载数据1. 单个数据2. 对象 3. 实践4. 总结 二、拦截器1. 概述2. 实现3. 实践4. 总结 三、文件上传&#xff1a;Upload1. 准备工作2. 步骤3. 效果 四、文件下载&#xff1a;Download1. 步骤2. 效果3. 总结 注意&#xff1a…