Python----计算机视觉处理(Opencv:图像颜色替换)

news2025/3/18 20:41:54

一、开运算

       开运算就是对图像先进行腐蚀操作, 然后进行膨胀操作。开运算可以去除二值化图中的小的噪点,并分离相连的物体。

         其主要目的就是消除那些小白点

在开运算组件中,有一个叫做kernel的参数,指的是核的大小,通常为3x3、5x5、7x7 

二、制作掩膜

        掩膜(Mask)是一种在图像处理中常见的操作,它用于选择性地遮挡图像的某些部分,以实现特定任务 的目标。掩膜通常是一个二值化图像,并且与原图像的大小相同,其中目标区域被设置为1(或白色), 而其他区域被设置为0(或黑色),并且目标区域则可以根据HSV的颜色范围进行修改,如下图所示,可 以选择制作不同颜色的掩膜:

三、颜色替换

        由于掩膜与原图的大小相同,并且像素位置一一对应,那么我们就可以得到掩膜中白色(也就是像素值 为255)区域的坐标,并将其带入到原图像中,即可得到原图中的红色区域的坐标,然后就可以修改像 素值了,这样就完成了颜色的替换。

 

 导入模块

import cv2
import numpy as np

输入图像

img=cv2.imread('red_green_blue_yello.png')

GBR到HSV转换

img_hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)

创造掩膜

lowerb=np.array([0,43,46])
upperb=np.array([10,255,255])
img_mask=cv2.inRange(img_hsv,lowerb,upperb)

构建核

kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(3,3))

开运算

img_open=cv2.morphologyEx(img_mask,cv2.MORPH_OPEN,kernel)

 颜色替换

for i in range(img_open.shape[0]):
    for j in range(img_open.shape[1]):
        if img_open[i,j]==255:
            img[i,j]=(255,0,0)

 或

img[img_open==255]=(255,0,0)

 输出图像

cv2.imshow('img',img)
cv2.waitKey(0)

完整代码

import cv2  # 导入OpenCV库  
import numpy as np  # 导入NumPy库,用于数组处理  

# 读取图像  
img = cv2.imread('red_green_blue_yello.png')  

# 将BGR图像转换为HSV颜色空间  
img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)  

# 定义HSV颜色空间的阈值范围,以识别特定颜色(例如,红色)  
lowerb = np.array([0, 43, 46])  # HSV下界  
upperb = np.array([10, 255, 255])  # HSV上界  

# 创建掩膜,提取在指定HSV范围内的颜色区域  
img_mask = cv2.inRange(img_hsv, lowerb, upperb)  

# 创建一个3x3的矩形结构元素(用于形态学操作)  
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))  

# 对掩膜进行开运算,去除小噪声  
img_open = cv2.morphologyEx(img_mask, cv2.MORPH_OPEN, kernel)  

# for i in range(img_open.shape[0]):
#     for j in range(img_open.shape[1]):
#         if img_open[i,j]==255:
#             img[i,j]=(255,0,0)

# 将开运算后掩膜中白色区域对应的原图像区域更改为蓝色  
# img[i,j]=(255,0,0) 是将白色区域设置为蓝色 (OpenCV中的BGR格式)  
img[img_open == 255] = (255, 0, 0)  

# 显示处理后的图像  
cv2.imshow('img', img)  

# 等待用户按键后关闭窗口  
cv2.waitKey(0)  

四、库函数 

morphologyEx()

cv.morphologyEx(	src, op, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]]	) ->	dst
方法描述
src源图像。通道数可以是任意的。深度应为 CV_8U、CV_16U、CV_16S、CV_32F 或 CV_64F 之一。
dst与源图像大小和类型相同的目标图像。
op形态作的类型请参见 MorphTypes
kernelStructuring 元素。可以使用 getStructuringElement 创建它。
anchor内核的锚点位置。负值表示锚点位于内核中心。
iterations应用侵蚀和扩张的次数。
borderType像素外插方法,请参阅 BorderTypes。不支持BORDER_WRAP。
borderValueborder 值(如果边界为常量)。默认值具有特殊含义。
MORPH_ERODE
Python:cv.MORPH_ERODE
腐蚀
MORPH_DILATE
Python:cv.MORPH_DILATE
膨胀
MORPH_OPEN
Python:cv.MORPH_OPEN

开运算,先腐蚀后膨胀

MORPH_CLOSE
Python:cv.MORPH_CLOSE

闭运算,先膨胀后腐蚀

MORPH_GRADIENT
Python:cv.MORPH_GRADIENT

膨胀-腐蚀

MORPH_TOPHAT
Python:cv.MORPH_TOPHAT

原图像-开运算

MORPH_BLACKHAT
Python:cv.MORPH_BLACKHAT

闭运算-原图像

MORPH_HITMISS
Python:cv.MORPH_HITMISS

“hit or miss” .- 仅支持 CV_8UC1 二进制图像。可以在文档中找到教程

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

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

相关文章

一周学会Flask3 Python Web开发-SQLAlchemy查询所有数据操作-班级模块

锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 我们来新建一个的蓝图模块-班级模块,后面可以和学生模块,实现一对多的数据库操作。 blueprint下新建g…

Matlab 风力发电机磁悬浮轴承模型pid控制

1、内容简介 略 Matlab 174-风力发电机磁悬浮轴承模型pid控制 可以交流、咨询、答疑 2、内容说明 磁悬浮轴承具有无接触、无摩擦、高速度、高精度、能耗低、不需要需润滑无油污染、可靠性高、寿命长和密封等一系列显著的优点。将磁悬浮技术应用于风力发电机中可以降低风机切入…

FPGA中级项目1——IP核(ROM 与 RAM)

FPGA中级项目1——IP核(ROM 与 RAM) IP核简介 在 FPGA(现场可编程门阵列)设计中,IP 核(Intellectual Property Core,知识产权核)是预先设计好的、可重用的电路模块,用于实…

Matlab 基于专家pid控制的时滞系统

1、内容简介 Matlab 185-基于专家pid控制的时滞系统 可以交流、咨询、答疑 2、内容说明 略 在处理时滞系统(Time Delay Systems)时,使用传统的PID控制可能会面临挑战,因为时滞会导致系统的不稳定或性能下降。专家PID控制通过结…

Unity 笔记:在EditorWindow中绘制 Sorting Layer

在Unity开发过程中,可能会对旧资源进行批量修改,一个个手动修改费人费事,所以催生出了一堆批量工具。 分享一下在此过程中绘制 Sorting Layer 面板的代码脚本。 示意图: 在 EditorGUI 和 EditorGUILayer 中内置了 SortingLayerF…

2024浙江大学计算机考研上机真题

2024浙江大学计算机考研上机真题 2024浙江大学计算机考研复试上机真题 2024浙江大学计算机考研机试真题 2024浙江大学计算机考研复试机试真题 历年浙江大学计算机复试上机真题 历年浙江大学计算机复试机试真题 2024浙江大学计算机复试上机真题 2024浙江大学计算机复试机试真题 …

蓝桥杯嵌入式赛道复习笔记2(按键控制LED灯,双击按键,单击按键,长按按键)

硬件原理解释 这张图展示了一个简单的按键电路原理图,其中包含四个按键(PB0、PB1、PB2、PB3、PA0),每个按键通过一个10kΩ的上拉电阻连接到VDD(电源电压),并接地(GND)。 …

每天五分钟深度学习PyTorch:循环神经网络RNN的计算以及维度信息

本文重点 前面我们学习了RNN从何而来,以及它的一些优点,我们也知道了它的模型的大概情况,本文我们将学习它的计算,我们来看一下RNN模型的每一个时间步在计算什么? RNN的计算 ht-1是上一时刻的输出,xt是本时刻的输入,然后二者共同计算得到了ht,然后yt通过ht计算得到,…

Ubuntu docker安装milvusdb

一、安装docker 1.更新软件包 sudo apt update sudo apt upgrade sudo apt-get install docker-ce docker-ce-cli containerd.io查看是否安装成功 docker -v二、使用国内的镜像下载 milvusdb Docker中国区官方镜像: https://registry.docker-cn.com milvusdb/milvus - Doc…

【优选算法篇】--深度解析之滑动窗口篇

滑动窗口 一、长度最小的子数组二、无重复字符的最长子串三、最大连续1的个数III四、水果成篮 一、长度最小的子数组 长度最小的子数组 解析: 首先看到这题 我们首先想到的是暴力枚举,就是暴力枚举所有子数组和。时间复杂度是O(n^3)。 我们这里用解法…

[STM32]新建工程||一个工程文件应该有哪些基本内容?

目录 一 、开发方法 1.直接使用程序来配置寄存器 2.基于库函数的方式 3.基于HAL库的方式 二 、常规的工程文件分类 STM32芯片型号分类以及缩写 ​三 步骤总结 四 工程架构 五 调用外设基本通用步骤 一 、开发方法 1.直接使用程序来配置寄存器 底层,直接&…

python编写的一个打砖块小游戏

游戏介绍 打砖块是一款经典的街机游戏,玩家控制底部的挡板,使球反弹以击碎上方的砖块。当球击中砖块时,砖块消失,球反弹;若球碰到挡板,则改变方向继续运动;若球掉出屏幕底部,玩家失…

【菜鸟飞】通过vsCode用python访问公网deepseek-r1等模型(Tocken模式)

目标 通过vsCode用python访问deepseek。 环境准备 没有环境的,vscode环境准备请参考之前的文章,另外需安装ollama: 【菜鸟飞】用vsCode搭建python运行环境-CSDN博客 AI入门1:AI模型管家婆ollama的安装和使用-CSDN博客 选读文章…

Figma介绍(基于云的协作式界面设计工具,主要用于UI/UX设计、原型制作和团队协作)

文章目录 注册和登录简单操作说明Figma介绍**核心特点**1. **云端协作与实时同步**2. **跨平台兼容**3. **高效设计工具**4. **原型交互与动效**5. **开发对接友好**6. **插件生态**7. **版本控制与历史记录** **适用场景**- **团队协作**:远程团队共同设计、评审、…

Text-to-SQL将自然语言转换为数据库查询语句

有关Text-To-SQL方法,可以查阅我的另一篇文章,Text-to-SQL方法研究 直接与数据库对话-text2sql Text2sql就是把文本转换为sql语言,这段时间公司有这方面的需求,调研了一下市面上text2sql的方法,比如阿里的Chat2DB,麻…

XSS漏洞靶场---(复现)

XSS漏洞靶场—(复现) 反射型 XSS 的特点是攻击者诱导用户点击包含恶意脚本的 URL,服务器接收到请求后将恶意脚本反射回响应页面,浏览器执行该脚本从而造成攻击,恶意脚本不会在服务器端存储。 Level 1(反射型XSS) 此漏…

基于ssm的电子病历系统(全套)

一、系统架构 前端:jsp | bootstrap | jquery 后端:spring | springmvc | mybatis 环境:jdk1.8 | mysql | maven | tomcat | idea 二、代码及数据库 三、功能介绍 01. 登录 02. 主页 03. 管理员-个人中心-修改密码…

Linux-数据结构-线性表-单链表

一.链表的概念 【1】线性表的链式存储 解决顺序存储的缺点,插入和删除,动态存储问题。 【2】特点: 线性表链式存储结构的特点是一组任意的存储单位存储线性表的数据元素,存储单元可以是连续的,也可以不连续。可以被存…

基于SpringBoot的Mybatis和纯MyBatis项目搭建的区别

【由于之前学习MyBatis的时候是跟着视频敲的纯MyBatis项目,以至于在突然看到别人在SpringBoot项目里搭建MyBatis方式的时候很懵比…特此文字形式记录一下区别(应该还有好多种其他方式是我不知道的,主要应该就是要知道关键的流程步骤&#xff…

大数据学习(68)- Flink和Spark Streaming

🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一…