Python OpenCV基于HSV的颜色分割实现示例

下面给您讲解一下“Python OpenCV基于HSV的颜色分割实现示例”的完整攻略。

简介

HSV是颜色空间的一种,由色调(Hue)、饱和度(Saturation)和明度(Value)构成。相对与RGB颜色空间,HSV颜色空间更加容易进行颜色分割。本实例使用Python OpenCV实现基于HSV颜色空间的颜色分割。

准备

安装Python和OpenCV、numpy库,可以使用pip install opencv-python numpy命令进行安装。

开始实现

1.读取图像

首先,读入一张图片。

import cv2

img = cv2.imread("example.jpg")

2.转换颜色空间

将BGR颜色空间转换为HSV颜色空间。

import cv2
import numpy as np

img = cv2.imread("example.jpg")
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

3.确定颜色分割的范围

选定要分割的颜色的范围。这里以分割红色为例,红色的HSV值为0-10和160-179。

import cv2
import numpy as np

img = cv2.imread("example.jpg")
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# 分割红色
lower_red1 = np.array([0, 70,  50])
upper_red1 = np.array([10, 255, 255])
lower_red2 = np.array([160, 70, 50])
upper_red2 = np.array([179, 255, 255])
mask_red1 = cv2.inRange(hsv, lower_red1, upper_red1)
mask_red2 = cv2.inRange(hsv, lower_red2, upper_red2)
mask_red = cv2.bitwise_or(mask_red1, mask_red2)

4.应用颜色分割

使用颜色分割后的掩膜对原图像进行处理,即可得到分割后的图像。

import cv2
import numpy as np

img = cv2.imread("example.jpg")
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# 分割红色
lower_red1 = np.array([0, 70,  50])
upper_red1 = np.array([10, 255, 255])
lower_red2 = np.array([160, 70, 50])
upper_red2 = np.array([179, 255, 255])
mask_red1 = cv2.inRange(hsv, lower_red1, upper_red1)
mask_red2 = cv2.inRange(hsv, lower_red2, upper_red2)
mask_red = cv2.bitwise_or(mask_red1, mask_red2)

# 应用颜色分割
res = cv2.bitwise_and(img, img, mask=mask_red)
cv2.imshow("result", res)
cv2.waitKey(0)
cv2.destroyAllWindows()

示例说明

示例1:分割绿色

如果要分割绿色,在确定颜色分割的范围时,可以设置如下的上下界。

# 分割绿色
lower_green = np.array([35, 43, 46])
upper_green = np.array([90, 255, 255])
mask_green = cv2.inRange(hsv, lower_green, upper_green)

示例2:分割蓝色

如果要分割蓝色,在确定颜色分割的范围时,可以设置如下的上下界。

# 分割蓝色
lower_blue = np.array([100, 50, 50])
upper_blue = np.array([124, 255, 255])
mask_blue = cv2.inRange(hsv, lower_blue, upper_blue)

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python OpenCV基于HSV的颜色分割实现示例 - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • 使用python如何对图片进行压缩

    以下是使用Python对图片进行压缩的完整攻略。 1. 安装必要的库 在对图片进行压缩之前,我们需要先安装必要的Python库。常用的库包括Pillow、numpy等。可以使用如下命令进行安装: !pip install Pillow 2. 读入图片 使用Pillow库中的Image,我们可以方便地读入图片。读入图片的代码如下: from PIL impor…

    人工智能概览 2023年5月25日
    00
  • 用Go语言标准库实现Web服务之创建路由

    创建路由的背景和作用在Web开发中,经常需要针对不同的URL请求,返回不同的响应。而实现这个需求的方式就是通过创建路由。路由本质上是一个映射表,将客户端传入的URL映射到对应的函数上,以此实现不同URL请求的处理逻辑。Go语言标准库中内置的net/http模块,提供了完整的HTTP服务器和客户端功能。通过net/http包中提供的多项函数和接口,我们可以很方…

    人工智能概论 2023年5月25日
    00
  • pytorch加载自己的数据集源码分享

    下面是关于pytorch加载自己的数据集的完整攻略。 1. 准备数据集 在使用pytorch训练模型需要一个自己的数据集,这里以图像分类任务为例,准备一个包含训练集和测试集的数据集,其中每个图像都分好了类别并放在对应的文件夹中,例如: dataset ├── train │ ├── cat │ │ ├── cat1.jpg │ │ ├── cat2.jpg …

    人工智能概论 2023年5月25日
    00
  • Django自带用户认证系统使用方法解析

    下面是详细的“Django自带用户认证系统使用方法解析”攻略: 1. Django自带用户认证系统 Django自带了一个完整的用户认证系统,包括用户登陆/注册、重置密码、发送邮件等常用功能。通过这个系统,你可以轻松地管理你网站的用户。 2. 使用步骤 2.1 安装Django 首先,我们需要安装Django。可以通过pip install django来安…

    人工智能概览 2023年5月25日
    00
  • Django 序列化的具体使用

    Django 是一个流行的 Python Web 框架,具有高度可扩展性和易于维护性。在 Django 中,序列化是指将 Django 模型(Model)转换为 Python 数据类型,并将其转换为一种格式,以便可以将其存储在文件中、通过 HTTP 传输或用于其他目的。Django 内置了序列化与反序列化功能,可以方便地实现数据的导入和导出。 下面详细讲解 …

    人工智能概论 2023年5月25日
    00
  • MySQL安全策略(MySQL安全注意事项)

    MySQL是一种常用的关系型数据库管理系统,是许多网站和应用程序的核心,也因此成为了攻击者攻击的目标之一。因此,在使用MySQL时必须要注意安全策略,避免数据泄露和系统被攻击。下面是MySQL安全注意事项的详细攻略,我们将从以下几个方面进行讲解: 使用强密码 MySQL的安全性很大程度上取决于该服务器上的每个用户的密码强度。因此,在设置MySQL密码时,建议…

    人工智能概览 2023年5月25日
    00
  • 随书源码

    什么是随书源码? 随书源码是指在一本书的附录中提供的书本配套代码资料。它为读者提供了一个快速深入了解和学习某一个主题或技术的途径,使读者可以更好地了解实现的方法和步骤,以及通过代码实现概念和理论的应用方法。 随书源码的优势 提供随书源码的好处有很多,下面列出了其中的几个: 便于深入学习:随书源码能够帮助读者更好地理解教材上的概念和技术,调试代码也能够帮助读者…

    人工智能概论 2023年5月25日
    00
  • python如何在pygame中设置字体并显示中文详解

    Python是游戏开发者、学生以及任何对编写个性化软件和网站有兴趣的人认为最先进的编程语言之一。而pygame则是Python的游戏开发框架之一,可以让程序员使用Python编写2D游戏。 在使用pygame设计游戏时,可能需要显示中文字体了,那么接下来我将详细解释如何设置中文字体并在pygame中显示它们。 步骤一:准备中文字体文件 我们需要一个支持中文的…

    人工智能概览 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部