python图像处理初步

文章目录

    • 处理流程
    • 灰度分布图

处理流程

在Python中,通过【plt】和【numpy】可以实现图像处理的最简单的流程,即读取图片->处理图片->显示结果->保存结果。

import matplotlib.pyplot as plt
import numpy as nppath = 'lena.jpg'
img = plt.imread(path).astype(float)/255
blue = img[:,:,2]fig = plt.figure()
ax = fig.add_subplot(121)
ax.imshow(img)
plt.title("rgb")ax = fig.add_subplot(122)
ax.imshow(blue, cmap='Blues')
plt.title("blue channel")plt.savefig("test.png")
plt.show()

其中,imread函数用于读取图片,默认数据类型是8位无符号整型,为了便于后续处理,故而将其转换为float类型。

读取到的lena图是RGB图像,共有三个通道,将其第三个通道,即蓝色通道抽取出来,赋予一个新的变量,此即我们的处理流程。

接下来,显示RGB图像和蓝色通道图像的区别,可通过imshow函数进行绘图。根据数据类型的不同,imshow默认的颜色映射方式不同,对于8位无符号整型,默认0和255为黑色和白色;对于浮点数来说,默认0和1为黑色和白色。由于图像已经转换为浮点数,故除以255,以完成从 [ 0 , 255 ] [0,255] [0,255] [ 0 , 1 ] [0,1] [0,1]的映射,从而可以正确显示其色彩。

对于单个通道的图像,则需指明映射方式,即cmap参数,由于我们抽选了蓝色通道,故而将其伪彩映射设为Blues。绘图结果如下

在这里插入图片描述

最后,savefig可将图像存储为文件,由此便完成了图像处理的基本流程。

灰度分布图

单通道图像作为一种矩阵数据,所有适用于矩阵的统计信息,都可用于图像处理。诸如均值、峰值、极差、标准差等均适用于图像数据,此外,灰度直方图也是一个重要的统计特征,通过plt.hist可直接对单个通道进行绘制,这些均与通常的数据处理相似。

有时,我们比较关心图像的灰度值在横向和纵向的分布,尤其是在寻找信号的时候,如下图所示

在这里插入图片描述

这个图像分别按行和按列统计了三个通道的灰度和,根据上面的统计数据可知,在横坐标为80左右的位置,有一个突变,结合图像中的内容可知,这里的确是某个柜子框线。

下面是绘图代码,由于lena图有3个通道,所以在对每行或者每列像素求和时,选择分别对三个通道进行操作。而后在绘制曲线时,对三个通道的值也使用了不同的颜色方案。通过tick_params函数,取消了上图底部和右图左侧的坐标刻度。

xs = [np.sum(img[:,:,i],0) for i in range(3)]
ys = [np.sum(img[:,:,i],1) for i in range(3)]fig = plt.figure()
gs = fig.add_gridspec(2, 2,width_ratios=(4, 1),height_ratios=(1, 4))ax = fig.add_subplot(gs[1, 0])
ax.imshow(img)        # 散点图绘制xHist = fig.add_subplot(gs[0, 0], sharex=ax)
xHist.tick_params(axis="x", labelbottom=False)yHist = fig.add_subplot(gs[1, 1], sharey=ax)
yHist.tick_params(axis="y", labelleft=False)colors = 'rgb'
for i in range(3):xHist.plot(xs[i], color=colors[i])yHist.plot(ys[i], np.arange(len(ys[i])),color=colors[i])plt.show()

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

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

相关文章

春节医美热,爱美客、昊海生科谁更赚钱?

在颜值经济赛道上,医美项目逐渐成为消费主流。随着春节假期的到来,医美消费又将迎来高峰期。 “医美三剑客”中,爱美客(300896.SZ)、昊海生科(688366.SH)近日相继公布了2023年的业绩报告:2023年,爱美客预计实现净利润…

白敬亭风波后现身,心情低落进新剧组,父母暖心陪伴。

♥ 为方便您进行讨论和分享,同时也为能带给您不一样的参与感。请您在阅读本文之前,点击一下“关注”,非常感谢您的支持! 文 |猴哥聊娱乐 编 辑|徐 婷 校 对|侯欢庭 白敬亭春晚首秀引热议,口碑因“春山学”风波陷两极…

掌握Docker:让你的应用轻松部署和管理

文章目录 一、引言(为什么要学习docker?)1.1 环境不一致1.2 隔离性1.3 弹性伸缩1.4 学习成本 二、Docker介绍2.1 Docker的由来2.2 什么是Docker2.3 为什么要用Docker2.3.1 虚拟机2.3.2 Linux容器 2.4 Docker与传统虚拟机的区别2.5 Docker的思…

微信小程序(四十五)登入界面-简易版

注释很详细,直接上代码 上一篇 此文使用了vant组件库,没有安装配置的可以参考此篇vant组件的安装与配置 新增内容: 1.基础组件的组合 2.验证码倒计时的逻辑处理 源码: app.json {"usingComponents": {"van-field…

打印水仙花数---c语言刷题

欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 题述 求出0~100000之间的所有“水仙花数”并输出。 “水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153&#…

C++数据库连接池

功能实现设计 : ConnectionPool.cpp 和 ConnectionPool.h :连接池代码实现 Connection.cpp 和 Connection.h :数据库操作代码、增删改查代码实现 连接池主要包含了以下功能点 : 1.连接池只需要一个实例,所以 Connec…

前端工程化面试题 | 17.精选前端工程化高频面试题

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

高并发系统实战课个人总结(极客时间)

高并发系统实战课 场景 读多写少 我会以占比最高的“读多写少”系统带你入门,梳理和改造用户中心项目。这类系统的优化工作会聚焦于如何通过缓存分担数据库查询压力,所以我们的学习重点就是做好缓存,包括但不限于数据梳理、做数据缓存、加缓…

有哪些非常经典的开源项目?

本文从ABCD角度图解这方面内容。 业界把人工智能(Artificial Intelligence)、区块链(Blockchain)、云计算(Cloud Computing)和数据科学(Data Science)统称的“ABCD”推崇为颇具潜力…

[力扣 Hot100]Day35 LRU 缓存

题目描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否…

@ControllerAdvice 统一管理异常/错误

ControllerAdvice 统一管理异常/错误 文章目录 ControllerAdvice 统一管理异常/错误一、注意事项二、统一管理异常/错误的好处三、代码实现1. 普通方法2. 统一管理ControllerAdvice3. PostMan测试结果 一、注意事项 1. 如果校验注解不指定 message 属性 ,会返回默认消息, 这些…

编译原理之SLR(1)和语法制导的翻译

1.SLR(1)思想: 基于容许LR(0)规范集中有冲突的项目集,用向前查看一个符号的办法进行处理,解决冲突,因为只对有冲突的状态才查看一个符号,是一种简单的LR(1)分析法,用SLR(1)表示 2.SLR(1)分析的简单方法&a…

荣耀MWC发布AI使能的全场景战略

【2024年2月25日,巴塞罗那】荣耀在2024 MWC世界移动通信大会上正式发布了全新的AI使能的全场景战略,推出平台级AI赋能,以人为中心的跨操作系统体验和基于意图识别的全新人机交互,以及与全球合作伙伴合作的荣耀Magic6 Pro&#xff…

Easy-Jmeter: 性能测试平台

目录 写在开始1 系统架构2 表结构设计3 测试平台生命周期4 分布式压测5 压力机管理6 用例管理6.1 新增、编辑用例6.2 调试用例6.3 启动测试6.4 动态控量6.5 测试详情6.6 环节日志6.7 实时数据6.8 测试结果 7 测试记录7 用例分析8 系统部署8.1普通部署8.2容器化部署 写在最后 写…

CAS5.3使用JPA实现动态注册服务

cas同时支持cas协议和OAuth2协议,官方默认是通过扫描json文件的形式注册客户端服务,但是此种方式需要重启服务才能生效,此次我们将使用JPA来完美实现动态注册服务,如果不知道cas如何部署,可以擦看之前的文章 cas-client基于CAS协议客户端搭建-CSDN博客 cas-server5.3自定义密…

GPIO通用输入输出管脚

GPIO 文章目录 GPIO单片机的工作方式CPU是通过读写寄存器来控制GPIO的GPIO硬件框架 8种模式结构推挽/推挽复用输出模式开漏/开漏复用输出输入结构 单片机是如何访问寄存器的?GPIO输出速度 GPIO,General Purpose lnput Outpu,指的是芯片的通用输入输出管脚。 单片机的…

TLS1.2抓包解析

1.TLS1.2记录层消息解析 Transport Layer SecurityTLSv1.2 Record Layer: Handshake Protocol: Client HelloContent Type: Handshake (22)Version: TLS 1.0 (0x0301)Length: 253Content Type:消息类型,1个字节。 i 0Version:协议版本&…

第二代80KM高效远距离传输:100G ZR4光模块的应用与发展

随着信息时代的发展,数据传输的需求日益增长,而光模块作为数据中心和网络基础设施的关键组成部分,其性能和应用范围也在不断扩大。易天光通信的第二代100G ZR4 80KM光模块很好的满足了当代社会通信网络的需求。本文易天光通信将探讨第二代高效…

数学建模【插值与拟合】

一、插值与拟合简介 在数学建模过程中,通常要处理由试验、测量得到的大量数据或一些过于复杂而不便于计算的函数表达式,针对此情况,很自然的想法就是,构造一个简单的函数作为要考察数据或复杂函数的近似。插值和拟合就可以解决这…

快速启动-后台管理系统

目录 Gitee人人开源 后端快速启动 1.clone仓库到本地 2.初始化数据库 3.更改数据库连接 4.启动项目验证 前端快速启动 1.克隆仓库 2.vsCode打开 3.控制台npm install 4.验证测试 时代已然不同,后台管理也可以使用脚手架方式快速启动。 Gitee人人开源 地…