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

news2024/10/7 6:44:08

图像处理

  • 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]=0
        else:
            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.coloradmin.cn/o/1637833.html

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

相关文章

linux 光驱(光盘)安装

文章目录 自带 YUM 库创建 repo创建文件夹挂载光驱开机自启动挂载安装软件YUM 安装RPM 安装 自带 YUM 库 ls /etc/yum.repos.d创建 repo vim /etc/yum.repo.d/demo.repo // 编写 repo 相关配置 [demo] namedemo baseurlfile:///mnt/cdrom gpkcheck0创建文件夹挂载光驱 /dev/…

黑马点评项目个人笔记+项目优化调整

博客须知 本篇博客内容来源与黑马点评项目实战篇-16.用户签到-实现签到功能_哔哩哔哩_bilibili&#xff0c;作者对视频内容进行了整合&#xff0c;由于记笔记时图片使用的是本地路径&#xff0c;所以导致博客的图片无法正常显示&#xff0c;如果有图片需求可以下载上方的pdf须…

【介绍下大数据组件之Storm】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

树莓派点亮LED灯

简介 使用GPIO Zero library 的 Python库实现点亮LED灯。接线 树莓派引脚参考图如下&#xff1a; LED正极 接GPIO17 LED负极 接GND 权限 将你的用户加到gpio组中&#xff0c; 否则无法控制GPIO sudo usermod -a -G gpio 代码 from gpiozero import LED from time impor…

PhpAdmin-getshell

PhpAdmin-getshell 通过未授权成功写入&#xff0c;然后getshell 路径&#xff1a;C:\phpstudy_pro\Extensions\MySQL5.7.26\ 写入木马&#xff1a; into写入文件&#xff1a; 使用需看要secure_file_priv的值。 当value为“null”时&#xff0c;不允许读取任意文件 当value为…

VS Code工具将json数据格式化

诉求&#xff1a;json数据格式化应该在工作中用到的地方特别多&#xff0c;为了更方便、更仔细的对json数据查看&#xff0c;将json数据格式化是非常有必要的。 VS Code中如何将json数据快速格式化 1、在VS Code中安装Beautify JSON插件 2、安装完后在需要格式化的文件中按住…

pyqt拖入图片并显示

pyqt拖入图片并显示 介绍效果代码 介绍 像拖入文本一样&#xff0c;把图片拖入到窗体中显示。 效果 代码 import sys from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout from PyQt5.QtGui import QPixmap, QDragEnterEvent, QDropEvent from PyQt5.Q…

Co-assistant Networks for Label Correction论文速读

文章目录 Co-assistant Networks for Label Correction摘要方法Noise DetectorNoise Cleaner损失函数 实验结果 Co-assistant Networks for Label Correction 摘要 问题描述&#xff1a; 描述医学图像数据集中存在损坏标签的问题。强调损坏标签对深度神经网络性能的影响。 提…

基于springboot实现迪迈手机商城设计系统项目【项目源码+论文说明】

基于springboot实现迪迈手机商城设计系统演示 研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff0c;规范化管理。…

53.HarmonyOS鸿蒙系统 App(ArkTS) socket套接字连接失败无效参数--invalid argument

ark ts socket套接字连接失败无效参数--invalid argument 绑定本机真实连接的WIFI的IP&#xff0c;不要绑定127.0.0.1

【树——数据结构】

文章目录 1.基本概念2.基本术语1.结点之间的关系描述2.结点&#xff0c;树的属性描述3.有序树&#xff0c;无序树4.森林 3.树的性质考点1考点2考点3考点4 4.树的存储结构5.树和森林的遍历 1.基本概念 结点&#xff0c;根节点&#xff0c;分支结点&#xff0c;叶子结点&#xf…

民航电子数据库:mysql与cae(insert语法差异)

目录 示例1、cae插入数据时不支持value关键字&#xff0c;只能使用values2、insert时&#xff0c;就算是自增主键&#xff0c;只要新增时包含了主键&#xff0c;该主键就必须有值&#xff0c;否则会报错&#xff1a;字段xxx不能取空值 对接民航电子数据库&#xff0c;本篇记录i…

php反序列化以及相关例题

目录 一、什么是序列化和反序列化&#xff1f; 二、相关函数 serialize()函数&#xff1a; unserialize()函数&#xff1a;反序列化 三、PHP序列化格式 四、序列化与反序列化的作用 五、各种数据类型序列化后的效果 六、魔术方法 七、反序列化的一些绕过 八…

CSDN如何在个人主页开启自定义模块|微信公众号

目前只有下面三种身份才具有这个功能。 VIP博客专家企业博客 栏目内容不知道怎么写HTML的&#xff0c;可以联系我帮你添加

Leetcode—1232. 缀点成线【简单】

2024每日刷题&#xff08;122&#xff09; Leetcode—1232. 缀点成线 算法思想 实现代码 class Solution { public:bool checkStraightLine(vector<vector<int>>& coordinates) {int x0 coordinates[0][0];int y0 coordinates[0][1];int x1 coordinates[1…

Ubuntu系统设置中文及中文输入法(手把手,学不会打我)

前言 最近开始搞C系统编程的学习&#xff0c;整了个Ubuntu系统&#xff0c;进去发现是英文系统&#xff0c;我一开始觉得也能接受&#xff0c;就当练英文&#xff0c;反正那些命令也都是用英文&#xff0c;不过后面等我暗转了一个Chrome并且开始用这里的软件去搜问题时&#x…

抓取内网Windows明文密码与hashdump抓取密文

抓取内网Windows明文密码与hashdump抓取密文 一、msf远程控制实验1、生成一个木马控制程序--mpf.exe2、启用MSF攻击平台3、加载模块和选择payload4、设置payload参数并且进行监听5、提权6、hashdump抓取hash值 二、实验思考题&#xff1a;2.1 windows登录的明文密码&#xff0c…

C语言-分支和循环语句、函数、数组、操作符、指针、结构体

目录 一、scanf和getchar二、产生随机数函数三、辗转相除法求最大公约数四、函数的参数4.1 实际参数&#xff08;实参&#xff09;4.2 形式参数&#xff08;形参&#xff09;4.3 内存分配 五、函数的调用5.1 传值调用5.1 传址调用 六、函数的声明和定义6.1 函数的声明6.2 函数的…

ESD管 AZ5825-01F国产替代型号ESDA05CPX

已经有很多客户选用雷卯的ESDA05CPX替代Amazing 的 AZ5825-01F&#xff0c; 客户可以获得更好的价格和更快的交期&#xff0c;主要应用于对5V供电和4.5V供电电流较大的Vbus线路插拔保护等。 雷卯ESDA05CPX优势&#xff1a; 带回扫 &#xff0c;钳位电压Vc 低&#xff0c;IPP为…

springboot+vue学习用品商店商城系统java毕业设计ucozu

该系统利用java语言、MySQL数据库&#xff0c;springboot框架&#xff0c;结合目前流行的 B/S架构&#xff0c;将互动式学习用品网上商城平台的各个方面都集中到数据库中&#xff0c;以便于用户的需要。该系统在确保系统稳定的前提下&#xff0c;能够实现多功能模块的设计和应用…