(超全)python图像处理详细解析(1)

图像处理

    • skimage包的子模块
    • 1.读取图像
    • 2.图像灰度处理
    • 3.加载程序自带图像
    • 4.查看存储路径
    • 5.保存图片
    • 6.图片信息
    • 7.输出小猫图片的G通道中的第20行30行列的像素值
    • 8.显示红色单通道图片
    • 9.对小猫图片添加椒盐噪声
    • 10.高斯去噪
    • 11.中值滤波去噪
    • 12.随机生成噪声点
    • 13.对小猫图像进行裁剪
    • 14.对像素点进行操作

skimage包的子模块

io:读取、保存和显示图片或视频
data:提供一些测试图片和样本数据
color:颜色空间变换
filters:图像增强、边缘检测、排序滤波器、自动阈值等
draw:操作于numpy数组上的基本图形绘制,包括线条、矩形、圆和文本等
transform:几何变换或其它变换,如旋转、拉伸和拉东变换等
morphology:形态学操作,如开闭运算、骨架提取等
exposure:图片强度调整,如亮度调整、直方图均衡等
feature:特征检测与提取等
measure:图像属性的测量,如相似性或等高线等
segmentation:图像分割
restoration:图像恢复
util:通用函数

1.读取图像

#导包,io模块提供了图像输入输出的功能
from skimage import io
#io.imread()函数读取图像文件
img = io.imread('iii.jpg',as_gray=True)
#io.imshow()函数显示存储在变量img中的图像
io.imshow(img)
io.show()

在这里插入图片描述

2.图像灰度处理

#io模块提供了图像输入输出的功能
from skimage import io
#io.imread()函数读取图像文件,并将其以灰度图像的形式存储在变量img中img = io.imread('iii.jpg',as_gray=True)
io.imshow(img)
io.show()

在这里插入图片描述

3.加载程序自带图像

skimage程序自带了一些示例图片,如果我们不想从外部读取图片,就可以直接使用这些示例图片:
astronaut 宇航员图片
coffee 一杯咖啡图片
lena 美女图片
camera 拿相机的人图片
coins 硬币图片
moon 月亮图片
checkerboard 棋盘图片
horse 马图片
page 书页图片
chelsea 小猫图片
hubble_deep_field 星空图片
text 文字图片
clock 时钟图片
immunohistochemistry 结肠图片
显示这些图片可用如下代码,不带任何参数

#io模块提供了图像输入输出的功能,data模块包含了一些示例图像。
from skimage import io,data
#加载名为chelsea小猫的示例图像
img=data.chelsea()
io.imshow(img)

在这里插入图片描述

4.查看存储路径

#data_dir用于存储示例图像数据集的路径
from skimage import data_dir
print(data_dir)

显示结果:
在这里插入图片描述

5.保存图片

使用io模块的imsave(fname,arr)函数来实现。第一个参数表示保存的路径和名称,第二个参数表示需要保存的数组变量。

from skimage import data,io
img = data.chelsea()
io.imshow(img)
io.imsave('D:\cat1.jpg',img)

保存图片的同时也起到了转换格式的作用。如果读取时图片格式为jpg图片,保存为png格式,则将图片从jpg图片转换为png图片并保存。

6.图片信息

from skimage import io,data
img=data.chelsea()
io.imshow(img)
print(type(img))  #显示类型
print(img.shape)  #显示尺寸
print(img.shape[0])  #图片宽度
print(img.shape[1])  #图片高度
print(img.shape[2])  #图片通道数
print(img.size)  #显示总像素个数
print(img.max())  #最大像素值
print(img.min())  #最小像素值
print(img.mean())   #像素平均值

7.输出小猫图片的G通道中的第20行30行列的像素值

img[i,j,c]:
i表示图片的行数,j表示图片的列数,c表示图片的通道数
(RGB三通道分别对应0,1,2)

from skimage import io,data
img = data.chelsea()
pixel=img[20,30,1]
print(pixel)

在这里插入图片描述

8.显示红色单通道图片

from skimage import io,data
img = data.chelsea()
#提取红色通道
R=img[:,:,0]
io.imshow(R)

提取蓝色通道数据:B = img[:,:,2]
提取绿色通道数据:G = img[:,:,1]
在这里插入图片描述

9.对小猫图片添加椒盐噪声

用到了numpy包里的random来生成随机数,randint(0,cols)表示随机生成一个整数,范围在0到cols之间。
用img[x,y,:]=255这句来对像素值进行修改,将原来的三通道像素值,变为255

from skimage import io,data
import numpy as np
img = data.chelsea()#获取图像的行数、列数和通道数。
rows,cols,dims = img.shape
#随机生成50000个椒盐
for i in range(50000):
#随机生成椒盐噪声点的坐标(x和y)x=np.random.randint(0,rows)y=np.random.randint(0,cols)img[x,y,:]=200
io.imshow(img)

在这里插入图片描述

10.高斯去噪

高斯模糊是一种常用的去除噪声的方法,通过对图像进行模糊处理来平滑图像,去除噪声。

先保存刚刚的椒盐去噪图片

io.imsave('D:\jycat1.jpg',img)
import cv2
#读取图像
image = cv2.imread(r'D:\rgzn\jycat.png')
#这行代码调用cv2.GaussianBlur()函数,对读取的图像进行高斯模糊处理。
#参数(5, 5)表示卷积核的大小为5x5,第三个参数0表示在X和Y方向上的高斯标准差。
blurred_image = cv2.GaussianBlur(image,(5,5),0)
#使用cv2.imshow()函数显示名为Blurred Image的窗口,并在该窗口中显示经过高斯模糊处理后的图像blurred_image。
cv2.imshow('Blurred Image',blurred_image)
#等待用户按下任意键。
cv2.waitKey(0)
#关闭所有打开的窗口。
cv2.destroyAllWindows()

在这里插入图片描述

11.中值滤波去噪

中值滤波是一种非线性滤波方法,对每个像素点周围的像素值取中值,从而有效去除椒盐噪声等噪声。

import cv2image = cv2.imread(r'D:\rgzn\jycat.png')
#对读取的图像进行中值模糊处理。参数5表示卷积核的大小为5x5。
median_blurred_image = cv2.medianBlur(image, 5)
#使用cv2.imshow()函数显示名为Median Blurred Image的窗口,并在该窗口中显示经过中值模糊处理后的图像
cv2.imshow('Median Blurred Image', median_blurred_image)
#等待用户按下任意键。
cv2.waitKey(0)
#关闭所有打开的窗口。
cv2.destroyAllWindows()

在这里插入图片描述

12.随机生成噪声点

import cv2
import numpy as np
import random
img = cv2.imread('mao.jpg')
#获取图像的形状信息,包括高度、宽度和通道数,并将其存储在ingInfo变量中。
ingInfo = img.shape
#获取图像高度
h = ingInfo[0] - 1
#获取图像宽度
w = ingInfo[1] -1
# 噪声点的个数
temp = 2500 
#偶数白点,奇数黑点
for i in range(0, temp):if random.randint(1, temp) % 2 == 0:img[random.randint(0, h), random.randint(0, w)] = (255, 255, 255)if random.randint(1, temp) % 2 != 0:img[random.randint(0, h), random.randint(0, w)] = (0, 0, 0)
cv2.imshow('33', img)
cv2.imwrite('noise.jpg', img)cv2.waitKey(0)

在这里插入图片描述

13.对小猫图像进行裁剪

from skimage import io,data
img=data.chelsea()
roi=img[70:150,130:220,:]
io.imshow(roi)

在这里插入图片描述

14.对像素点进行操作

img[i,:] = img[j,:]		 # 将第 j 行的数值赋值给第 i 行img[:,i] = 100 			# 将第 i 列的所有数值设为 100img[:100,:50].sum()   	# 计算前 100 行、前 50 列所有数值的和img[50:100,50:100]   	# 50~100 行,50~100 列(不包括第 100 行和第 100 列)img[i].mean()		 	# 第 i 行所有数值的平均值img[:,-1]			 	# 最后一列img[-2,:] (or img[-2]	)	 # 倒数第二行

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

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

相关文章

平抑风电波动的电-氢混合储能容量优化配置

这篇论文中的EMD分解法在非线性扰动信号分解上优于小波分解法,EMD分解出来的imf各频次信号,继而利用C2F实现信号重构,根据最大波动量限值剔除出需要储能平抑的波动量,继而用超级电容实现平抑(论文中用的碱水电解槽+燃料电池我认为有很多个点可以佐证不合适,但是电制氢是热…

数据库工程师的工作职责(合集)

数据库工程师的工作职责1 职责: 1. 日常数据库的基本安装,维护,升级,监控的; 2. 配合研发部门进行数据库设计支持,协助开发、设计和进行SQL语言优化; 3. 配合相关部门数据库相关的任务,比如数据导入导出&am…

Unity 实现原神中的元素反应

一、元素反应 原神中共有七种元素,分别是水、火、冰、岩、风、雷、草。这七种元素能互相作用 Demo下载:Download 元素反应表格图示,可能不够精准 /火水雷冰草岩风绽放原激化火/蒸发超载融化燃烧结晶扩散烈绽放/水蒸发/感电冻结/碎冰绽放结晶…

tomcat服务器日志记录文件说明和问题初筛

目录 1.认识tomcat服务器日志文件2.SpringBoot项目开启记录日志文件3.根据实验4.Spring Boot和MyBatis框架的日志输出5.部署在tomcat服务器上,控制台输出内容在哪6.程序运行报错输出7.记录访问Tomcat服务器的所有HTTP请求信息8.记录tomcat内部程序错误,如…

深度学习-自动求导

目录 向量链式法则标量链式法则 拓展到向量例题1例题2 符号求导数值求导自动求导计算图自动求导的两种模式链式法则正向累积(从x出发)反向累积(反向传递--先计算最终的函数即y)反向累积总结 自动求导计算y关于x的梯度,…

C++初阶之入门

零、什么是C C是基于C语言而产生的,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行面向对象的程序设计。 C缺点之一,是相对许多语言复杂,而且难学难精。许多人说学…

C++11 数据结构7 队列的链式存储,实现,测试

前期考虑 队列是两边都有开口,那么在链式情况下,线性表的链式那一边作为对头好呢? 从线性表的核心的插入和删除算法来看,如果在线性表链表的头部插入,每次循环都不会走,但是删除的时候,要删除线…

webpack热更新原理详解

文章目录 前言基础配置创建项目HMR配置 HMR交互概览HMR流程概述HMR实现细节初始化注册监听编译完成事件启动服务监听文件代码变化服务端发送消息客户端收到消息热更新文件请求热更新代码替换 问题思考 前言 刷新分为两种:一种是页面刷新,不保留页面状态…

SpringBoot War打包部署

修改打包方式 <packaging>war</packaging>修改 Servlet 容器的 scope <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope></d…

在Langchain中使用ConversationSummaryMemory给链增加记忆

刚接触Langchain&#xff0c;整体感觉下来就是langchain中的事件顺序都是按照一定的套路来实现&#xff0c;例如常见的链LLMChain&#xff0c;需要使用到的大模型LLM和Langchain自带的PromptTemplate两块来实现&#xff0c;要求PromptTemplate有预留好下一步插入的内容。比如下…

循环神经网络介绍(RNN)

序列模型 定义&#xff1a;自然语言处理、音频、视频以及其他序列数据的模型 类型&#xff1a; 语音识别 情感分析 机器翻译 特点&#xff1a; 序列数据前后之间有很强的关联性 序列数据的输入输出长度不固定 循环神经网络 定义&#xff1a;循环&#xff08;递归&#xff…

JetBot手势识别实验

实验简介 本实验目的在JetBot智能小车实现手势识别功能&#xff0c;使用板卡为Jetson Nano。通过小车摄像头&#xff0c;识别五个不同的手势&#xff0c;实现小车的运动及灯光控制。 1.数据采集 连接小车板卡的Jupyterlab环境&#xff0c;运行以下代码块&#xff0c;配置数据…