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

news2024/12/23 9:21:05

图像处理

    • 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 cv2

image = 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 列的所有数值设为 100
 
img[: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.coloradmin.cn/o/1633545.html

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

相关文章

vue报错:Do not mutate vuex store state outside mutation handlers.

vue报错:Do not mutate vuex store state outside mutation handlers. 原因:在vuex store的state外部直接修改了state的值,但是Vuex要求所有的state的修改必须在vuex中,不允许直接咋组件中修改store中的状态,除非通过m…

ios CI/CD 持续集成 组件化专题五-(自动发布私有库-组件化搭建)

一:手动发布私有库总结 手动发布pod私有库,需要进行如下几步操作: 1、修改完代码之后,需要提交代码push到git仓库。 2、给代码打tag。 3、修改podspec文件的version值,使其和设置的tag一直。 4、命令行执行pod repo…

【Java EE】日志框架(SLF4J)与门面模式

文章目录 🍀SLF4j🌳门面模式(外观模式)🌸门面模式的定义🌸门面模式的模拟实现🌸门面模式的优点 🌲关于SLF4J框架🌸引入日志门面 ⭕总结 🍀SLF4j SLF4J不同于其他⽇志框架,它不是⼀个…

分子动力学模拟学习-Gromacs工具链

1、总体流程 在gromacs的使用说明中有一个flow chart,比较简略。以下针对一般体系(非蛋白等领域)进行了一些调整,通用性更强。 在做分子动力学模拟时,其复杂性除了以上各种输入输出文件的操作,另一点就是力…

DataX数据采集流程(项目)

目录 1.CDH介绍 2.ClouderaManager架构 3.服务器 4.dataX架构 5.Datax数据处理流程 6.DataX的使用说明 7.Mysql数据切割 8.Mysql数据导入HDFS 9.查询站点 站点页面如下,可进一步查询导入的数据内容 10.dataX-Web访问页面 创建数据库连接 1.CDH介绍 --(…

pycharm中执行./activate命令激活服务器提示“about_Execution_Policies”

1.虚拟环境创建 环境: 操作系统:Windows11 pycharm: 2022.1.4 python版本:3.9 执行命令安装: pip install virtualenv 执行命令创建虚拟环境: virtualenv venv 2.激活报错 执行命令激活虚拟环境&…

朋友们,帮忙填写一个问卷呀!关于高速服务区一体化车流管理系统的线上调研,急需各位大神的帮助!!!

✌ 作者简介:瑞骏 RUIJUN 📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀 💬 人生格言:没有我不会的语言,没有你过不去的坎儿。💬 &#x…

Kafka Exactly Once 语义实现原理:幂等性与事务消息

01 前言 在现代分布式系统中,确保数据处理的准确性和一致性是至关重要的。Apache Kafka,作为一个广泛使用的流处理平台,提供了强大的消息队列和流处理功能。随着业务需求的增长,Kafka 的事务消息功能应运而生,它允许应…

cocos-lua资源管理

本文介绍cocos-lua项目的资源管理和工作流,适用人群包括初学者和有经验开发者,故读者可根据自己的需要有选择性的查阅自己需要的内容,下文以ccs代指Cocos Studio 一.简单案例解析 下文通过介绍一个简单demo,介绍合图和资源目录结…

React Router 路由配置数组配组持久化

在一些特定场景下,你可能需要将路由配置数组进行持久化,例如从后端动态加载路由配置或根据用户权限动态生成路由配置。这时,持久化路由配置数组就很有用,可以避免每次应用启动时重新获取或计算路由配置。 持久化路由配置数组的步骤如下: 定义路由配置数组 首先,你需要定义一…

每日一题(力扣55):跳跃游戏--贪心

刚开始像这道题&#xff0c;想的是这么从当前可以走的那几步中选择一步&#xff0c;所以一坨屎一样的代码 class Solution { public:bool canJump(vector<int>& nums) {int nnums.size();int step0;int u0;int u_max0;int step_size0;int max_size0;int loci0;while…

前端vue如何生成二维码

有时候有需要链接直接生成二维码在手机上看的需求&#xff0c;比如下载&#xff0c;比如信息&#xff0c;比如excel 下面先引入包 import QRCode from qrcode; 然后上代码 // 将res转换成二维码const qrCodeData JSON.stringify(res); // 将res转换为字符串作为二维码数据// …

基于Springboot的水产养殖系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的水产养殖系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&…

php7.4在foreach中对使用数据使用无法??[]判读,无法使用引用传递

代码如下图&#xff1a;这样子在foreach中是无法修改class_history的。正确的应该是去掉??[]判断。 public function actionY(){$array [name>aaa,class_history>[[class_name>一班,class_num>1],[class_name>二班,class_num>2]]];foreach ($array[class_…

系统思考—企业辅导咨询

从2004年、2014年到2024年&#xff0c;国九条政策的发布与变迁不仅影响了行业趋势&#xff0c;更深刻地改变了企业的风险预估和策略辅导。彼得杜鲁克曾经说过&#xff1a;“必须系统地抛弃旧知识。”这不仅是企业领导者的挑战&#xff0c;也是我们每个人的难题。难点不在于我们…

cesium教程

环境搭建 vscode安装Visual Studio Code - Code Editing. Redefined nodejs安装Node.js — Run JavaScript Everywhere cesium源码下载编译 cesium官网下载源码https://cesium.com/downloads/ 解压下载的源码 VsCode打开远吗&#xff0c;找到index.html,右键打开 Open wit…

开源博客项目Blog .NET Core源码学习(20:App.Hosting项目结构分析-8)

本文学习并分析App.Hosting项目中后台管理页面的个人资料页面、修改密码页面。 个人资料页面 个人资料页面用于显示和编辑个人信息&#xff0c;支持从本地上传个人头像。整个页面使用了layui中的表单、日期与时间选择、上传等样式或模块&#xff0c;通过layui.css文件设置样式…

案例-部门管理-删除

黑马程序员JavaWeb开发教程 文章目录 一、查看页面原型二、查看接口文档三、开发1、Controller2、Service&#xff08;1&#xff09;service接口层&#xff08;3&#xff09;service实现层 3、Mapper4、Postman 一、查看页面原型 二、查看接口文档 三、开发 1、Controller 因…

2022-2003年上市公司企业商业信用融资数据

01、数据简介 企业商业信用融资是指企业之间在买卖商品时&#xff0c;以商品形式提供的借贷活动。这种融资方式是经济活动中一种最普遍的债权债务关系。商业信用的存在对于扩大生产和促进流通起到了十分积极的作用&#xff0c;但不可避免的也存在着一些消极的影响。 测算方式…

【高校科研前沿】华东师大白开旭教授博士研究生李珂为一作在RSE发表团队最新成果:基于波谱特征优化的全球大气甲烷智能反演技术

文章简介 论文名称&#xff1a;Developing unbiased estimation of atmospheric methane via machine learning and multiobjective programming based on TROPOMI and GOSAT data&#xff08;基于TROPOMI和GOSAT数据&#xff0c;通过机器学习和多目标规划实现大气甲烷的无偏估…