[Python图像处理] 使用 HSV 色彩空间检测病毒对象

news/2024/10/25 17:25:44/

使用 HSV 色彩空间检测病毒对象

    • 前言
    • 检测病毒对象
    • 相关链接

前言

在本节中,我们将学习如何使用 OpenCVHSV 色彩空间中使用特定颜色检测感兴趣对象。我们需要通过指定颜色值范围识别和提取感兴趣的对象,使用具有病毒的血细胞图像,我们的目标在于识别绿色的病毒对象。

检测病毒对象

(1) 首先,导入所需 Python 库,使用 OpenCVimread() 函数读取图像,然后将 BGR 图像转换为 RGB 色彩空间图像,以便我们可以正确地使用 imshow() 函数显示该图像。接下来,我们使用 cv2.cvtcolor() 函数将 RGB 色彩空间图像转换到 HSV 色彩空间中:

import cv2
from matplotlib import pyplot as plt
import numpy as npimg = cv2.cvtColor(cv2.imread('virus_blood.jpg'), cv2.COLOR_BGR2RGB)
img_hsv=cv2.cvtColor(img, cv2.COLOR_RGB2HSV)

(2) 通过使用 cv2.inRange() 函数选择图像中病毒对象可能具有的HSV颜色范围,为病毒对象创建遮罩。要在 HSV 色彩空间中找到特定的颜色,只需查找相应的 HS 范围,然后将 V 的范围设置为我们感兴趣的颜色(例如,病毒的绿色),然后就可以执行搜索任务,根据本节应用,我们可以将 HSV 范围设置为从 (30, 23, 10)(80, 255, 255)

OpenCVinRange() 函数可以用于颜色检测,它接受 HSV 输入图像以及颜色范围作为参数,并会返回一个二值蒙版图像,其中白色像素代表处于指定 HSV 范围内的像素,而黑色像素表示指定的范围之外的像素:

low_green = np.array([30, 25, 10])
high_green = np.array([80, 255, 255])
green_mask = cv2.inRange(img_hsv, low_green, high_green)
green = cv2.bitwise_and(img, img, mask=green_mask)

(3) 通过创建输出图像,使用二值掩码对绿色病毒对象进行切片,并将其设置为零:

output_img = img.copy()
output_img[np.where(green_mask==0)] = (0,0,0)

(4) 最后,绘制输入图像、生成的掩码图像以及检测到的病毒对象的输出图像:

plt.figure(figsize=(20, 8))
plt.gray()
plt.subplots_adjust(0,0,1,0.975,0.05,0.05)
plt.subplot(131), plt.imshow(img), plt.axis('off'), plt.title('original', size=20)
plt.subplot(132), plt.imshow(green_mask), plt.axis('off'), plt.title('mask', size=20)
plt.subplot(133), plt.imshow(output_img), plt.axis('off'), plt.title('virus cells', size=20)
plt.suptitle('Filtering out the virus cells', size=30)
plt.show()

病毒对象
从以上图像可以看出,由于一些病毒对象被血细胞遮挡,因此在输出图像中仅部分可见。

相关链接

Python图像处理【1】图像与视频处理基础
Python图像处理【2】探索Python图像处理库
Python图像处理【3】Python图像处理库应用


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

相关文章

11个案例讲透 Python 函数参数

今天给大家分享一下自己整理的一篇 Python 参数的内容,内容非常的干,全文通过案例的形式来理解知识点,自认为比网上 80% 的文章讲的都要明白,如果你是入门不久的 python 新手,相信本篇文章应该对你会有不小的帮助。 接…

nginx架构解析:朴实中见真知

目录前言为什么高并发很重要Apache可以做到吗使用nginx会更有优势吗?nginx架构概览代码结构Workers模型nginx进程规则nginx缓存概览nginx配置nginx内部典型的HTTP请求处理循环课程总结前言 nginx(发音“engine x”)是俄国的软件工程师Igor S…

【3.3 ads篇(重点)】

3.3 ads篇(重点) 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、基本概念1.1 基本定义1.2 关键类型二、数据类型2.1 ads数据类型2.2 类型转换2.3 结果缓冲区总结前言 提示:以下是本篇文章正文内容,下面案例可供参考 一、基本概念 …

第4、5、6 章

第4章 数据库编程 用如下拼接sql的方式检验用户名和密码: select * from user where useridaa and userpwda or 11 : where条件为真。所以是不安全的。 避免方式:在sql中使用"?"进行预编译 第5章 JavaBean简介 JavaBean是Java W…

关于2022年国内软件质量调查问卷的一些感悟与收获

📋前言 1️⃣关于2022年国内软件质量调查主题征文活动 CSDN《2022年国内软件质量调查》正式开启,我们诚邀各位博主,特别是测试领域的各位技术er参与调查,并围绕主题,撰写《我填写“2022年国内软件质量调查问卷”的感想…

制作圣诞帽其实特简单(附 Python 代码)

圣诞将至,虽然咱不过这洋节,但是热闹还是要凑一下的,相信已经有很多圣诞帽相关的周边在流传了,今天咱们就自己动手,给头像增加一个圣诞帽。 文章目录基础知识准备数字图像图像通道ROI和mask矩阵(Numpy&…

34.前端笔记-CSS3-动画

1、动画 动画animation是CSS3中具有颠覆性的特征之一,可以通过设置多个节点来精确控制一个或一组动画,常用来实现复杂的动画效果 相比较过渡,动画可以实现更多变化,更多控制,连续自动播放等效果 2、动画的基本使用 …

DNS协议分析

上一篇文章从工作原理角度分析了DNS的作用与意义,这次来看看DNS到底是以什么形式进行通信的。 DNS报文格式如下所示: DNS报文由12字节长的首部和4个长度可变的字段组成。 1.标识,由主机端设置,为的是唯一标识当前DNS报文。 2.1…