图像处理的一些操作(1)

图像处理

  • 1.安装PIL,skimage库
    • 1.1导入skimage库中的oi模块和data模块
  • 2.读取图像文件
    • 2.1读取图像文件
    • 2.2 以灰度模式读取图像
    • 2.3 查看示例图像的目录路径
    • 2.4 读取chelsea图片
    • 2.5 加载示例图片并保存
    • 2.6 获得加载图片的信息
      • 2.6.1 输出图片类型
      • 2.6.2 输出图片尺寸
      • 2.6.3 输出图片宽度
      • 2.6.4 输出图片高度
      • 2.6.5 输出图片通道数
      • 2.6.6 输出图片总像素个数
      • 2.6.7 输出图片最大像素值
      • 2.6.8 输出图片最小像素值
      • 2.6.9 输出图片所有像素值平均值
  • 3.使用切片操作提取通道
    • 3.1提取红色通道
    • 3.2提取绿色通道
    • 3.3提取蓝色通道
  • 4.给图片添加椒盐噪声
    • 4.1提升图像维度
    • 4.2 添加随机噪声
    • 4.3显示修改后的图像
  • 5. 给图片去掉椒盐噪声
    • 5.1高斯模糊
    • 5.3 中值滤波
    • 5.2图像切片
    • 5.3特定区域像素值
      • 5.3.1计算特定区域像素值
  • 6.二值化图像
    • 6.1导入color模块
    • 6.2读取图像 转成灰度
    • 6.3遍历循环
  • 7.改变通道值
    • 7.1 [0, 255, 0]
    • 7.2 [6, 25, 60]
    • 7.3 [25, 25, 25]
  • 8. 图像归一化
    • 8.1导入模块
    • 8.2RGB图像转灰度图像
    • 8.3计算灰度图像的最小值和最大值
    • 8.4打印图像
    • 8.5创建两个子图

1.安装PIL,skimage库

1.1导入skimage库中的oi模块和data模块

io模块提供了用于读取和保存图像的函数,而data模块包含了一些实力图像供我们使用

from skimage import io,data

2.读取图像文件

2.1读取图像文件

使用io.Imread函数读取该图片,并加载到名为img的变量中。

img=io.imread(r"C:\Users\song\Desktop\1.jpg")
io.imshow(img)
io.show()

运行结果:
在这里插入图片描述

2.2 以灰度模式读取图像

使用io.Imread函数以灰度模式读取该图片,并加载到名为img的变量中。

img=io.imread(r"C:\Users\song\Desktop\1.jpg",as_gray=True)
io.imshow(img)

运行结果:
在这里插入图片描述

2.3 查看示例图像的目录路径

data_dir 是 skimage 库中的一个变量,它存储了示例图像的目录路径。通常情况下,这个路径指向 skimage 库内部的示例图像文件夹。这个文件夹包含了一些常用的示例图像,供用户在实验和测试时使用。

from skimage import data_dir
print(data_dir)

运行结果:
在这里插入图片描述

2.4 读取chelsea图片

使用了skimage 库中的data 和idata dir 、模块。首先,通过data.chelsea()方法读取了 Lena 图片,然后通过io.imread()方法结合datadir 路径读取了同样的 Lena 图片。这两种方法都用于加载 Lena 图片,只是一种是直接通过 data 模块获取示例图片,另一种是通过拼接路径的方式获取示例图片。

from skimage import data_dir,data,io
img1=data.chelsea() # 读取chelsea图片
img2=io.imread(data_dir+'/chelsea.png') # 读取chelsea图片

2.5 加载示例图片并保存

使用skimage库中的io.save()函数将加载的示例图像img保存到指定路径(imsave()函数会将图像以PNG格式保存到指定路径)
io.show()函数显示先前用io.imshow()加载的图像

from skimage import io,data
img=data.chelsea()
io.imshow(img)
io.show()
io.imsave(r"E:\工坊\chelsea.png",img)

运行结果:
在这里插入图片描述

2.6 获得加载图片的信息

用于获取图片的属性和统计信息

from skimage import io,data
img=data.chelsea()
io.imshow(img)

2.6.1 输出图片类型

输出<class ‘numpy.ndarray’>

print(type(img)) # 显示类型

运行结果:
在这里插入图片描述

2.6.2 输出图片尺寸

示例图像:(高度,宽度,通道数)
彩色图像:3(红、绿、蓝)

print(img.shape) # 显示尺寸

运行结果:
(300,451,3)

2.6.3 输出图片宽度

print(img.shape[0]) # 图片宽度

运行结果:
300

2.6.4 输出图片高度

print(img.shape[1]) # 图片高度

运行结果:
451

2.6.5 输出图片通道数

print(img.shape[2]) # 图片通道数

运行结果:
3

2.6.6 输出图片总像素个数

即宽度乘通道数

print(img.size) # 显示总像素个数

运行结果:
405900

2.6.7 输出图片最大像素值

print(img.max()) # 显示最大像素值

运行结果:
231

2.6.8 输出图片最小像素值

print(img.min()) # 显示最小像素值

运行结果:
0

2.6.9 输出图片所有像素值平均值

print(img.mean()) #显示像素平均值

运行结果:
115.30514166050752

3.使用切片操作提取通道

在numpy数组中,索引[0]表示红色通道,索引[1]表示绿色通道,索引[2]表示蓝色通道

3.1提取红色通道

red_channel = img[:, :, 0]
io.imshow(red_channel)
io.show()

运行结果:
在这里插入图片描述

3.2提取绿色通道

green_channel = img[:, :, 1]
io.imshow(green_channel)
io.show()

运行结果:
在这里插入图片描述

3.3提取蓝色通道

blue_channel = img[:, :, 2]
io.imshow(blue_channel)
io.show()

运行结果:
在这里插入图片描述

4.给图片添加椒盐噪声

4.1提升图像维度

rows代表行数,cols代表列数字,dims代表颜色通道数

rows,cols,dims=img.shape

4.2 添加随机噪声

对加载的图片进行随机位置(x,y)设置为白色的操作。

for i in range(5000): #循环5000次x = np.random.randint(0,rows) y = np.random.randint(0,cols)img[x,y,:]=255

4.3显示修改后的图像

io.imshow(img)

运行结果:
在这里插入图片描述

5. 给图片去掉椒盐噪声

5.1高斯模糊

import cv2# 读取图像
image = cv2.imread(r"C:\Users\song\Desktop\2.jpg")# 高斯模糊
blurred_image = cv2.GaussianBlur(image, (5, 5), 0)# 显示处理后的图像
cv2.imshow('Blurred Image', blurred_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

运行结果:
在这里插入图片描述

5.3 中值滤波

import cv2# 读取图像
image = cv2.imread(r"C:\Users\song\Desktop\2.jpg")# 中值滤波
blurred_image = cv2.medianBlur(image, 5)# 显示处理后的图像
cv2.imshow("Median Blurred Image", blurred_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

运行结果:
在这里插入图片描述

5.2图像切片

加载图像

from skimage import io, data
img = io.imread(r"C:\Users\song\Desktop\3.jpg")
io.imshow(img)

运行结果:
在这里插入图片描述
显示图像指定区域

from skimage import io,data
img = io.imread(r"C:\Users\song\Desktop\3.jpg")
song = img[300:600,130:350,:]
io.imshow(song)

运行结果:
在这里插入图片描述

5.3特定区域像素值

5.3.1计算特定区域像素值

通过两层循环遍历图像的每个像素位置,计算[:100, :50]内像素值的总和。

height, width = img.shape[0], img.shape[1]
for i in range(height):for j in range(width):region_sum = img[:100, :50].sum()print(region_sum)  

运行结果:
在这里插入图片描述

6.二值化图像

6.1导入color模块

color模块

from skimage import color

6.2读取图像 转成灰度

img_gray=color.rgb2gray(img)
rows,cols=img_gray.shape

6.3遍历循环

for i in range(rows):
for j in range(cols):if (img_gray[i,j]<=0.5):img_gray[i,j]=0else:img_gray[i,j]=1
io.imshow(img_gray)

运行结果:
在这里插入图片描述

7.改变通道值

7.1 [0, 255, 0]

找到原始图像中红色通道数大于170的像素,并将这些像素的颜色修改成绿色。

from skimage import color
img = io.imread(r"C:\Users\song\Desktop\1.jpg")
reddish = img[:, :, 0] >170
img[reddish] = [0, 255, 0]
io.imshow(img)

运行结果:
在这里插入图片描述

7.2 [6, 25, 60]

找到原始图像中红色通道数大于170的像素,并将这些像素的颜色修改成深蓝色。
运行结果:
在这里插入图片描述

7.3 [25, 25, 25]

找到原始图像中红色通道数大于170的像素,并将这些像素的颜色修改成灰色。
运行结果:
在这里插入图片描述

8. 图像归一化

8.1导入模块

从skimage库中导入io和color模块,同时从matplotlib.pyplot中导入plt模块

from skimage import io, color
import matplotlib.pyplot as plt

8.2RGB图像转灰度图像

img = io.imread(r"C:\Users\song\Desktop\1.jpg")
gray = color.rgb2gray(img)

8.3计算灰度图像的最小值和最大值

mn = gray.min()
mx = gray.max()
norm = (gray - mn) / (mx - mn)

8.4打印图像

print('归一化前:')
print(gray)
print('归一化后:')
print(norm)

8.5创建两个子图

分别显示归一化前和归一化后的灰度图像
运行结果:
在这里插入图片描述

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

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

相关文章

论文速递 | Operations Research 3月文章合集(上)

编者按 在本系列文章中&#xff0c;我们梳理了运筹学顶刊Operations Research在2024年3月份发布的18篇文章的基本信息&#xff0c;旨在帮助读者快速洞察领域新动态。本文为第一部分。 推荐文章1 ● 题目&#xff1a;Optimal Diagonal Preconditioning 最优对角预条件化 ● …

MySQL数据库练习(17)

schooldb库——utf8字符集——utf8_general_ci排序规则 81. DDL CREATE TABLE styles (id int(11) NOT NULL AUTO_INCREMENT COMMENT 自增ID,styleSys varchar(20) DEFAULT NULL COMMENT 系统类型(home:PC),styleName varchar(255) NOT NULL COMMENT 风格名称,styleAuthor va…

企业网站必看——企业级OV SSL证书详细介绍

组织验证&#xff08;Organization Validation&#xff0c;简称OV&#xff09;SSL证书作为网络安全解决方案的重要组成部分&#xff0c;通过提供中级的安全保障和增强的网站身份验证&#xff0c;有效提升了网站的安全级别与用户信赖度。本文将深入探讨OV SSL证书的工作原理、申…

SQL常用语句与事务介绍

文章目录 基本语法常见用法实用语句事务 基本语法 SELECT&#xff1a;用于从数据库表中检索数据。 语法&#xff1a;SELECT column1, column2, ... FROM table_name;INSERT INTO&#xff1a;用于向数据库表中插入新行。 语法&#xff1a;INSERT INTO table_name (column1, col…

面试:Spring(IOC、AOP、事务失效、循环引用、SpringMVC、SpringBoot的自动配置原理、Spring框架常见注解)

目录 一、Spring的单例Bean是否是线程安全的&#xff1f; 二、什么是AOP 1、介绍 &#xff08;1&#xff09;记录操作日志 &#xff08;2&#xff09;实现Spring中的事务 三、spring中事务失效的场景有哪些&#xff1f; 1、异常捕获处理 2、抛出检查异常 3、非public方…

nginx配置tcp长连接实现集群

注意&#xff1a;实际工程应该会用docker部署。 安装nginx sudo apt install libpcre3-dev zlib1g openssl -y wget https://nginx.org/download/nginx-1.26.0.tar.gz #安装到/home/gyl/workspace/mprpc/vendor/nginx-1.26.0下 tar xfzv nginx-1.26.0.tar.gz && cd n…

MATLAB初学者入门(29)—— 傅里叶分析

傅里叶分析是一种强大的数学工具&#xff0c;用于分解信号为正弦和余弦组成部分。在MATLAB中&#xff0c;可以使用多种方法进行傅里叶分析&#xff0c;包括快速傅里叶变换&#xff08;FFT&#xff09;和功率谱密度估计等。这些方法非常适用于信号处理、振动分析、音频处理等领域…

香港Web3,步履蹒跚

4月30日&#xff0c;6支香港虚拟资产现货ETF在香港交易所敲钟上市&#xff0c;正式迎来市场首秀。 而在前一周&#xff0c;香港证监会&#xff08;SFC&#xff09;官网就已列出华夏基金(香港)、博时国际和嘉实国际三家基金公司的比特币和以太坊现货ETF&#xff0c;并陆续披露了…

[ log日志画图]分割模型训练结束生成相关日志运用代码画图

文章目录 [ log日志画图]分割模型训练结束生成相关日志运用代码画图我的log文件&#xff1a;画图&#xff1a;1.loss1.1 loss是干嘛的1.2 代码1.3 生成图 2.DICE.IOU2.1 DICE,IOU是干嘛的(常规介绍)2.2 代码2.3 生成图小白tip [ log日志画图]分割模型训练结束生成相关日志运用代…

python 怎么调用R

如何在python中调用R&#xff1f;这其中包括了如何调用R的对象&#xff08;函数和包&#xff09;&#xff0c;R和python的对象如何互相转换&#xff0c;以及如何调用R的脚本&#xff08;外界参数的输入&#xff09;。python提供了一个模块rpy2&#xff0c;可以较好地完成这项工…

关于海康相机和镜头参数的记录

对比MV-CS020-10UC和大家用的最多的MV-CS016-10UC 其实前者适合雷达站使用&#xff0c;后者适合自瞄使用 一&#xff1a;MV-CS020-10UC的参数 二&#xff1a;对比 三&#xff1a;海康镜头选型工具

【刷爆力扣之二叉树】102. 二叉树的层序遍历

102. 二叉树的层序遍历 二叉树的层序遍历需要队列数据结构&#xff0c;还需要记录每一层节点的个数&#xff0c;可以定义一个变量记录&#xff0c;也可以直接使用队列中元素个数表示每一层的节点个数&#xff0c;每次获取队列头中的节点后&#xff0c;需要判断该节点是否有左右…

Java 基础重点知识-(泛型、反射、注解、IO)

文章目录 什么是泛型? 泛型有什么用?泛型原理是什么? Java 反射什么是反射? 反射作用是什么?动态代理有几种实现方式? 有什么特点? Java 注解什么是注解, 作用是什么? Java I/O什么是序列化?Java 是怎么实现系列化的?常见的序列化协议有哪些?BIO/NIO/AIO 有什么区别…

面试八股——HashMap

实现原理 红黑树是为了解决链表过长之后&#xff0c;查找时间过长的问题&#xff0c;将链表存储变为红黑树存储。 put方法的实现&#xff08;5⭐&#xff09; 相关属性&#xff1a; 1. 容量&#xff1a;初始容量为2^4。 2. 加载因子&#xff1a;初始值为0.75 上面两个属性的…

【面试经典 150 | 回溯】单词搜索

文章目录 写在前面Tag题目来源解题思路方法一&#xff1a;回溯 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题涉及到的数据结构等内容进行回顾…

Cloudflare高级防御规则 看看我的网站如何用防御的

网站已趋于稳定&#xff0c;并且经过nginx调优。我想先分享一下Cloudflare的WAF规则&#xff0c;因为这是最有效的防御之一&#xff0c;可以抵御大量恶意攻击流量&#xff0c;我已经验证了数月。 对于海外独立站电商网站&#xff0c;Cloudflare的CDN服务是首选&#xff0c;它强…

1. 深度学习笔记--神经网络中常见的激活函数

1. 介绍 每个激活函数的输入都是一个数字&#xff0c;然后对其进行某种固定的数学操作。激活函数给神经元引入了非线性因素&#xff0c;如果不用激活函数的话&#xff0c;无论神经网络有多少层&#xff0c;输出都是输入的线性组合。激活函数的意义在于它能够引入非线性特性&am…

【ZZULIOJ】1091: 童年生活二三事(多实例测试)(Java)

目录 题目描述 输入 输出 样例输入 Copy 样例输出 Copy code 题目描述 Redraiment小时候走路喜欢蹦蹦跳跳&#xff0c;他最喜欢在楼梯上跳来跳去。 但年幼的他一次只能走上一阶或者一下子蹦上两阶。 现在一共有N阶台阶&#xff0c;请你计算一下Redraiment从第0阶到第N阶…

代谢组数据分析七:从质谱样本制备到MaxQuant搜库

前言 LC-MS/MS Liquid Chromatography-Mass Spectrometry&#xff08;LC-MS/MS &#xff0c;液相色谱-质谱串联&#xff09;可用于残留化合物检测、有机小分子检测、鉴定和定量污染物以及在医药和食品领域添加剂检测和生物小分子等检测。 LC-MS/MS一般包含五个步骤&#xff…

为什么叫“机器学习”Machine Learning 而不是叫“计算机学习”?

有一门学科“机器学习”火了起来&#xff0c;它是计算机科学与数学结合的产物&#xff0c;它的目的是使计算机“聪明”起来&#xff0c;实现人工智能。可是&#xff0c;令人困惑的是它明明就是计算机学习&#xff0c;为什么不叫“计算机学习”而叫“机器学习”呢&#xff1f;这…