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

news2024/11/18 9:41:51

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

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

前言

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

检测病毒对象

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

import cv2
from matplotlib import pyplot as plt
import numpy as np

img = 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.coloradmin.cn/o/107274.html

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

相关文章

Python 自动化测试(五): Pytest 结合 Allure 生成测试报告

本文节选自霍格沃玆测试学院测试开发内部教材,进阶学习文末加群! 测试报告在项目中是至关重要的角色,一个好的测试报告: 可以体现测试人员的工作量; 开发人员可以从测试报告中了解缺陷的情况; 测试经理可…

7.Linux实用操作(2)

文章目录零、学习目标一、进程管理1、概念2、查看进程3、查看指定进程4、关闭进程二、主机状态1、查看系统资源占用2、top命令内容详解3、top命令选项4、top交互式选项5、磁盘信息监控三、上传、下载1、上传、下载2、rz、sz命令四、压缩、解压1、压缩格式3、tar命令4、tar 命令…

后端开发浅学react

博客笔记来自于学习 柴柴老师在b站分享的react学习视频,仅供学习参考,学习视频是来自于b站的:柴柴_前端教书匠,视频链接:React入门到实战(2022全网最新)_哔哩哔哩_bilibili 和 react官网 开始 – React …

谁会嫌钱多啊,最适合学生党的Python兼职攻略以及接私活经验

大家好,我是小八 这次我想谈谈一个非常热门的话题,就是如何在学习python的同时去赚钱。在这篇文章中,你会学习到如何通过学习python来赚取副业收入。 相信大家都对钱感兴趣吧,如果你和马云爸爸对钱不敢兴趣的话,那这…

Lambda表达式从用到底层原理

文章目录前言一、lambda函数基本使用参数列表返回类型函数体捕获列表值捕获引用捕获隐式捕获混合方式捕获修改值捕获变量的值异常说明二、lambda表达式使用的注意事项避免默认捕获模式三、lambda表达式底层实现原理采用值捕获采用引用捕获前言 lambda式作为一种创建函数对象的…

Python tkinter -- 第18章 画布控件之多边形

18.2.19 create_polygon(coords, **options) 根据 coords 给定的坐标,在画布上绘制一个多边形。 (1)coords:给定多边形的坐标 (2)options:选项的具体含义: 选项含义activedash当鼠标…

JavaEE- JVM八股文(JVM垃圾回收机制GC)

JVM垃圾回收的目标:主要针对内存中的堆空间进行垃圾回收。 Java中,大量的内存都在堆中。 程序计数器:固定大小,不涉及释放 栈:函数执行完毕,对应栈的空间就自动释放了,不需要垃圾回收 方法区&…

07-Golang中标识符的命名规则

Golang中标识符的命名规则标识符概念标识符的命名规则保留关键字介绍预定义标识符介绍标识符命名注意事项标识符概念 1.Golang对各种变量、方法等命名时使用的字符序列称为标识符 2.凡是自己可以起名字的地方都叫标识符 标识符的命名规则 1.由26个英文字母大小写&#xff0…

华为云桌面之下的“冰山”:技术底座x繁荣生态加速模式进化

在新兴技术迭代升级持续加速的背景下,很多产品类别的内涵和外延都在不断演进——虽然名字没什么变化,但实际所指已有云泥之别。 “云桌面”即是如此。从早期的无盘工作站,到VDI、IDV和VOI等技术流派的群雄并起,云桌面的江湖总是“…

linux第七章---管道、环境变量、常用命令

1.管道 1.1概念: 管道类似于文件重定向,可以将前一个命令的stdout重定向到下一个命令的stdin。 1.2要点: 管道命令仅处理stdout,会忽略stdeer。管道右边的命令必须要能接受stdin.多个管道命令可以串联。 1.3与文件重定向的区…

Java平衡树之查找树的详解(1)

1.平衡树 之前我们学习过二叉查找树,发现它的查询效率比单纯的链表和数组的查询效率要高很多,大部分情况下,确实是这样的,但不幸的是,在最坏情况下,二叉查找树的性能还是很糟糕。例如我们依次往二叉查找树中…

c语言预处理(万字解析)

预处理一.总体概述1.注释去除2.宏替换二.宏定义(宏替换类型)1.数值宏常量2.字符串宏常量3.用宏定义注释符号4.用宏定义表达式(难点)1.第一种情况2.第二种情况5.#undef(宏的有效范围)1.两个问题2.#undef的使…

FLStudio2023水果软件哪个版本好用?功能区别对比

FL Studio是一款功能非常强大的音乐创作编辑软件它就是FL Studio(水果软件)。使用FL Studio中文版可以轻松帮我们制作自己的音乐唱片,拥有强大且专业的编曲混音创作工具,有需要的朋友不要错过。 水果,全称Fruity Loop Studio,简称…

量子计算(十六):其他类型体系的量子计算体系

文章目录 其他类型体系的量子计算体系 一、离子阴量子计算 二、原子量子计算 三、核自旋量子计算 四、拓扑量子计算 其他类型体系的量子计算体系 一、离子阴量子计算 离子研量子计算在影响范围方面仅次于超导量子计算。早在2003年,基于离子阴就可以演示两比特…

“转行做程序员”很难?这里有4个重要建议

近几年来,传统行业多处于经济下行,加上互联网行业的赚钱效应,想要转行到这一行的人越来越多,其中程序员这个行业更是很多人梦寐以求的。 但另一方面,我们也发现,这些想要转行的同学们往往会遇到很多困扰。…

推荐今日 火火火火 的开源项目

本期推荐开源项目目录:1. coding-interview-university2. 前端后台管理模板3. 钉钉聊天机器人4. 基于 ChatGPT 的 Neovim 插件5. 开源的分布式社交网络平台6. 分析社交媒体内容7. 用于绘制流程图的库01coding-interview-university这是一个汇集了软件工程师面试中常…

2023跨年代码(烟花+背景音乐)

文章目录前言效果展示使用方法源码学习HTML代码CSS代码前言 时光荏苒,白驹过隙。2022这一年又在忙碌中度过了,过去的一年,我们同努力,我们共欢笑,每一次成功都蕴藏着我们辛勤的劳动。 新的一年即将来到,我…

【linuxgdb】动态链接和静态链接的区别,gdb的基础使用

目录 1.gcc/c动态链接和静态链接的区别 2.gdb的基础使用 2.2使用gdb调试 1.gcc/c动态链接和静态链接的区别 1.1查看可执行文件是动态还是静态的 格式:file文件名 1.2动态链接和静态链接 静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的…

ARM S5PV210 串行通信接口详解

一、串行通信接口详解 1 0. 串口的名称 S5PV210 的数据手册中串口控制器在 section8.1串口的官方名称叫:universal asynchronous reciver and transmitter,通用异步收发器 英文缩写是uart,中文简称串口。 1. S5PV210 的串口控制器工作原理…

CSS -- 2D转换各属性讲解(translate,rotate,scale)

文章目录2D转换1 二维坐标系2 2D转换之移动 translate3 2D转换之旋转 rotate4 2D转换中心点 transform-origin5 2D转换之缩放scale6 2D转换综合写法7 2D转换总结2D转换 转换(transform)是CSS3中具有颠覆性的特征之一,可以实现元素的位移、旋转、缩放等效果 转换(t…