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.hqwc.cn/news/492462.html

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

相关文章

python自带轻量级键值数据库shelve

使用python自带的shelve模块,可以作为轻量级的键值数据库,在使用时可以像字典一样使用: 使用shelve模块的流程如下: 示例程序 import pandas as pd import shelve import numpy as npdef main():_shelve_file "shelve_fi…

ABBYY FineReader16文档转换、PDF管理与文档比较功能介绍

ABBYY FineReader 16作为一款OCR和PDF一体化程序,其强大的功能使得文档处理变得简单高效。在众多功能中,文档转换、PDF管理和文档比较这三大功能尤为突出,成为了众多企业和个人用户的首选工具。 ABBYY Finereader 16-安装包下载如下&#xff…

GitHub下载器,老司机懂的都懂!

有些老司机或者做项目的小伙伴对GitHub应该不陌生吧,然而GitHub的下载速度非常让人不忍直视! 而GitHub高速下载器是一款专门用于加速在GitHub上下载资源的软件,解决了许多用户在下载GitHub资源时遭遇的速度慢和下载失败的问题。 本教程将详细…

通过css修改video标签的原生样式

通过css修改video标签的原生样式 描述实现结果 描述 修改video标签的原生样式 实现 在控制台中打开设置,勾选显示用户代理 shadow DOM,就可以审查video标签的内部样式了 箭头处标出来的就是shodow DOM的内容,这些内容正常不可见的&#x…

操作系统——处理机调度

文章目录 进程调度0.概念1.调度分类高级调度低级调度中级调度七状态模型调度对比 2.进程调度进程调度的时机进程调度的方式进程的切换方式调度器/调度程序闲逛进程 3. 调度算法的评价指标CPU利用率系统吞吐量周转时间等待时间响应时间 4. 调度算法先来先服务(FCFS)短作业优先(S…

【MATLAB源码-第148期】基于matlab的BP神经网络2/4ASK,2/4FSK,2/4PSK信号识别仿真。

操作环境: MATLAB 2022a 1、算法描述 1. 调制技术基础 调制技术是通信技术中的基础,它允许数据通过无线电波或其他形式的信号进行传输。调制可以根据信号的振幅、频率或相位的变化来进行,分别对应于ASK、FSK和PSK。 1.1 2ASK与4ASK 振幅…

二叉树与堆

目录 1.树概念及结构 1.1树的概念 1.2 树的相关概念 1.3 树的表示 1.4 树在实际中的运用(表示文件系统的目录树结构) 2.二叉树概念及结构 2.1概念 2.2现实中的二叉树: 2.3 特殊的二叉树: 2.4 二叉树的性质 2.5 二叉树的…

C++基础知识(七:多态)

一、多态 常说的多态,是发生在类之间的多态 函数重载(静态多态/编译时多态) 类之间的多态(动态多态/运行时多态) 【1】前提 继承是多态的前提 虚函数 什么是多态:相同的代码,实现不同的功能 【2】函数重写(override) 必须有继承关系父类中必须…

淘宝天猫商品详情API接口(商品详情页面数据,销量接口)

淘宝商品详情API接口,淘宝商品销量接口,淘宝商品价格接口,淘宝商品列表接口,淘宝商品数据列表接口,淘宝关键词搜索列表接口,淘宝APP详情接口,淘宝APP商品详情接口,淘宝H5详情接口&am…

Python判断列表里是否有重复元素的三种方法

一、用set方法去重后与原列表长度比较 lst[1,3,5,3,4,4,2,9,6,7] set_lstset(lst) #set会生成一个元素无序且不重复的可迭代对象,也就是我们常说的去重 if len(set_lst)len(lst):print(列表里的元素互不重复!) else:print(列表里有重复的元素&#xff01…

自动换刀主轴应用领域有哪些?

自动换刀主轴是一种先进的机床技术,能够实现快速、准确地更换刀具,提高加工效率和精度,因此在现代制造业中得到了广泛应用。 一、自动换刀主轴的应用领域 1.汽车制造业 汽车制造业是自动换刀主轴应用最广泛的领域之一。在汽车制造过程中&am…

【MySQL面试复习】什么是覆盖索引?/MySQL超大分页怎么处理?

系列文章目录 在MySQL中,如何定位慢查询? 发现了某个SQL语句执行很慢,如何进行分析? 了解过索引吗?(索引的底层原理)/B 树和B树的区别是什么? 什么是聚簇索引(聚集索引)和非聚簇索引…