当前位置: 首页 > news >正文

主要用于图像的颜色提取、替换以及区域修改

这段代码涉及了以下几个关键步骤,主要用于图像的颜色提取、替换以及区域修改。下面是对代码的详细解析:

1. 导入库

import cv2
import matplotlib.pyplot as plt
import numpy as np
  • cv2: OpenCV库,用于图像处理。
  • matplotlib.pyplot: 用于绘图和显示图像。
  • numpy: 用于数组处理。

2. 读取并显示图像

image = cv2.imread("./lunwen.png")
plt.imshow(image)
  • cv2.imread():读取指定路径的图像。
  • plt.imshow():使用 Matplotlib 显示图像。

3. 颜色提取与替换

lower_blue = (50, 0, 0)
upper_blue = (150, 255, 255)
mask = cv2.inRange(image, lower_blue, upper_blue)
  • 使用 cv2.inRange() 函数创建一个掩膜,用来提取图像中蓝色区域。lower_blueupper_blue 定义了蓝色的颜色范围(在 HSV 颜色空间中)。
image[mask.astype(bool)] = (185, 28, 28)
  • 将掩膜中的蓝色区域的像素值替换为 (185, 28, 28)(红色),mask.astype(bool) 将掩膜转换为布尔值数组。

4. 修改非蓝色区域

white_mask = cv2.inRange(image, (255, 255, 255), (255, 255, 255))
image[np.logical_and(white_mask == 0, ~mask)] = (78, 124, 15)
  • 创建一个白色掩膜,cv2.inRange() 用来提取图像中的白色区域(完全白色的像素)。
  • 使用 np.logical_and()~mask,将原图中非蓝色且非白色区域的像素值替换为 (78, 124, 15)(绿色)。

5. 保存并显示图像

plt.imsave('E:/绝缘子/1/1/实验图/绝缘子.png', image)
plt.imshow(image)
plt.axis('off')
  • 使用 plt.imsave() 将处理后的图像保存到指定路径。
  • plt.imshow(image) 显示修改后的图像。
  • plt.axis('off') 禁用坐标轴显示。

6. 处理标注图像

quyu = cv2.imread("E:/insulator/1/1/picture/lion/label.png")
quyu = quyu.mean(axis=2)
print(quyu)
np.unique(quyu)
  • 读取一个标注图像 label.png,然后通过 mean(axis=2) 将其转换为灰度图(平均化 RGB 通道)。
  • 使用 np.unique() 显示灰度图中出现的唯一值。

7. 修改图像中的特定区域

image[quyu != 0] = (255, 0, 255)
  • 在图像中,所有标注区域(quyu != 0)的像素被替换为紫色 (255, 0, 255)

8. 保存修改后的图像

plt.imsave("E:/insulator/1/1/picture/lion/lion.png", image)
plt.imshow(image)
plt.axis('off')
  • 保存并显示修改后的图像。

总结:

这段代码实现了以下功能:

  1. 提取并替换图像中的蓝色区域,将其改为红色。
  2. 将非蓝色且非白色区域修改为绿色。
  3. 根据标注图像(label.png)中非零的区域,将对应图像区域更改为紫色。
  4. 保存修改后的图像并进行展示。

整个流程包括了基于颜色范围的图像区域提取、颜色替换、区域修改、以及标注图像的处理,适用于图像分割和标记任务。

http://www.lryc.cn/news/489207.html

相关文章:

  • gbase8c之运维操作
  • 云原生学习
  • 深入解析 Vue 3 中的 defineExpose
  • Docker3:docker基础1
  • 【UGUI】背包的交互01(道具信息跟随鼠标+道具信息面板显示)
  • ubuntu20.04中编译安装gcc 9.2.0
  • ss 命令的基本用法
  • Leetcode198. 打家劫舍(HOT100)
  • kafka基础
  • STM32CUBEIDE FreeRTOS操作教程(九):eventgroup事件标志组
  • Python设计模式详解之2 —— 工厂模式
  • 【Zookeeper】二、主从应用(master-worker架构)
  • Diffusion【2】:VAE
  • 高级java每日一道面试题-2024年11月19日-基本篇-获取一个类Class对象的方式有哪些?
  • xilinx xapp1171学习笔记
  • 一次需升级系统的wxpython安装(macOS M1)
  • el-table 数据去重后合并表尾合计行,金额千分位分割并保留两位小数,表尾合计行表格合并
  • Springboot整合mybatis-plus使用pageHelper进行分页
  • 【Xbim+C#】创建拉伸的墙
  • 【阅读记录-章节3】Build a Large Language Model (From Scratch)
  • three.js 对 模型使用 视频进行贴图修改材质
  • MySQL - 数据库基础 | 数据库操作 | 表操作
  • maven父子项目
  • NLP论文速读(多伦多大学)|利用人类偏好校准来调整机器翻译的元指标
  • MyBatis——#{} 和 ${} 的区别和动态 SQL
  • 解决sql字符串
  • 深度解析:Android APP集成与拉起微信小程序开发全攻略
  • Leetcode 被围绕的区域
  • ssm框架-spring-spring声明式事务
  • React第五节 组件三大属性之 props 用法详解