《数字图像处理-OpenCV/Python》连载(6)基于Matplotlib显示图像

news2025/1/11 11:13:38

《数字图像处理-OpenCV/Python》连载(6)基于Matplotlib显示图像


本书京东优惠购书链接:https://item.jd.com/14098452.html
本书CSDN独家连载专栏:https://blog.csdn.net/youcans/category_12418787.html

在这里插入图片描述


第1章 图像的基本操作

为了方便初学者从零开始学习OpenCV-Python,本书从图像的读取、保存和显示等基本操作开始介绍,使读者可以循序渐进地使用和理解本书的每一个例程。


1.3 基于Matplotlib显示图像


OpenCV所提供的函数cv.imshow的显示功能比较简单,如果需要实现更丰富的图像显示和控制功能,通常可以使用Matplotlib。
Matplotlib是最常用的Python绘图库之一,功能非常强大。它能提供简单、完整的应用程序接口(API)和多样化的输出格式,可以绘制各种静态、动态和交互式图表,也可以作为控件嵌入图形用户界面(GUI)应用程序中。

Matplotlib中的函数cv.imshow能将数组的值以图片形式显示,可以显示OpenCV中的图像。函数cv.imshow的控制参数很多,本书只介绍图像显示中最常用的内容。

函数原型

matplotlib.pyplot.imshow(X, cmap, norm, aspect, interpolation, alpha, vmin, vmax, origin, extent, shape, filternorm, filterrad, imlim, resample, url, hold, data, **kwargs)

函数cv.imshow用于在指定窗口中显示OpenCV图像,默认将图像的像素值映射到[0,255] 显示。函数cv.waitKey用于等待按键事件或延迟(毫秒),以保持窗口显示。

参数说明

  • X:显示图像,支持Numpy数组或PIL图像。
  • cmap:颜色图谱的设置参数,默认为RGB(A)颜色空间。
    • gray:设置为显示灰度图像。
  • vmin,vmax:定义颜色映射覆盖的数据范围,是可选项,默认为图像X的数据范围。

注意问题
(1)在导入Matplotlib时通常将pyplot模块简写为plt,在程序中将函数cv.imshow简写为plt.imshow。
(2)OpenCV和Matplotlib中的彩色图像都是多维Numpy数组,但OpenCV使用的是BGR格式,颜色分量按B/G/R顺序排列;而Matplotlib使用的是RGB格式,颜色分量按R/G/B顺序排列。用plt.imshow()显示OpenCV彩色图像,要将BGR格式转换为RGB格式。

# 图片格式转换:BGR(OpenCV) -> RGB(Matplotlib/PyQt5)
imgRGB = cv.cvtColor(imgBGR, cv.COLOR_BGR2RGB)

(3)灰度图像不涉及颜色分量,不需要格式转换,但需要设置显示参数cmap=‘gray’。
(4)函数plt.imshow后必须带有函数plt.show,才能在指定窗口中显示图像。
(5)函数plt.imshow可以应用Matplotlib的各种控制方法,如标题、坐标轴和插值等,本书将结合例程来进行讲解。更多特殊方法和设置详见Matplotlib说明文档(链接1-2)。


【例程0105】使用Matplotlib显示图像

本例程使用Matplotlib显示彩色和灰度图像,运行结果如图1-2所示。

# 【0105】使用 Matplotlib 显示图像
import cv2 as cv
from matplotlib import pyplot as plt

if __name__ == '__main__':
    filepath = "../images/Lena.tif"  # 读取文件的路径
    img = cv.imread(filepath, flags=1)  # flags=1 读取彩色图像(BGR)
    imgRGB = cv.cvtColor(img, cv.COLOR_BGR2RGB)  # 图片格式转换:BGR-> RGB
    gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)  # 图片格式转换:BGR -> Gray

    plt.figure(figsize=(8, 7))  # 创建自定义图像
    plt.subplot(221), plt.title("1. RGB (Matplotlib)"), plt.axis('off')
    plt.imshow(imgRGB)  # 用Matplotlib 显示彩色图像(RGB格式)
    plt.subplot(222), plt.title("2. BGR (OpenCV)"), plt.axis('off')
    plt.imshow(img)    # 用Matplotlib 显示彩色图像(BGR格式)
    plt.subplot(223), plt.title("3. cmap='gray'"), plt.axis('off')
    plt.imshow(gray, cmap='gray')  # 用Matplotlib 显示灰度图像,设置 gray 参数
    plt.subplot(224), plt.title("4. without cmap"), plt.axis('off')
    plt.imshow(gray)  # 用Matplotlib 显示灰度图像,未设置 gray 参数
    plt.tight_layout()  # 自动调整子图间隔
    plt.show()  # 显示图像


在这里插入图片描述
图1-2 使用Matplotlib显示彩色和灰度图像


程序说明
(1)用Matplotlib显示OpenCV彩色图像时,要将BGR格式转换为RGB格式。图1-2(1)所示的格式已转换为RGB格式,图像的颜色显示正常;图1-2(2)所示为未做格式转换,直接显示了OpenCV的BGR格式图像,图像的颜色显示错误。
(2)当显示灰度图像时,要设置显示参数cmap=‘gray’。图1-2(3)所示为设置显示参数后的正确结果;图1-2(4)所示为没有设置显示参数,灰度图像的颜色显示错误。


本书京东优惠购书链接:https://item.jd.com/14098452.html


版权声明:
youcans@xupt 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/132688430)
Copyright 2023 youcans, XUPT
Crated:2023-09-09

欢迎关注本书CSDN独家连载专栏
《数字图像处理-OpenCV/Python》连载: https://blog.csdn.net/youcans/category_12418787.html

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

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

相关文章

软件系统验收测试需要注意的地方

验收测试 一、软件验收测试含义: 软件验收测试是指测试人员检验软件是否符合软件规格说明书和用户需求的测试活动。 验收测试是软件测试的最后一个环节,也是最为关键的一个要素。 它关系到软件开发公司的产品质量,也关系到需求方的产品能…

二分查找[整数二分]

引例 不知道你有没有玩过猜数字游戏,在0到100之间随机选取一个数,让你猜是几,比如这个数是67,如果你猜了50,就会提示你小了,那么你就会去51到100之间猜,你猜了75,就会提示你大了,你就会去51到74之间去猜,就这样一直猜,数字可取的区间越来越小,用不了多久就可以猜出.当你每次都…

SpringBoot如何实现热部署

热部署是软件开发中一个非常有用的功能,它允许我们在不重新启动整个应用的情况下,依旧能够使我们修改的代码生效。 现在Java Web 开发应该都是使用的 SpringBoot,那么本篇文章就来介绍SpringBoot 如何实现热部署? 1、热部署的优点…

如何提取视频中的音频?几个步骤轻松提取

在现今社交媒体的风靡下,许多人都会使用手机录制视频来记录生活中的美好瞬间。有时候,我们也会想要提取视频中的音频,例如将自己的演讲录音分发给听众。本文将会介绍如何在手机上提取视频中的音频以及需要注意的事项。 使用应用程序 首先&am…

Linux Debian12使用git将本地项目上传到码云(gitee)远程仓库

一、注册码云gitee账号 这个可以参考其他教程,本文不做介绍。 gitee官网:https://gitee.com/ 二、Linux Debian12安装git 如果Linux系统没有安装git,可以使用下面命令安装git sudo apt install git 三、gitee新建仓库 我这只做测试&…

实现分别在Linux、Docker、Kubernetes上安装部署Mysql、Redis、Nginx软件

目录 实现目的: Linux上一键安装Mysql、Nginx、Redis软件 一键安装Mysql脚本 一键安装Redis脚本 一键安装Nginx脚本 docker上安装部署Mysql、Nginx、Redis容器 Kubernetes上安装部署Mysql、Nginx、Redis的Pod和通过Service发布 创建Pod生成容器 使用Servic…

时间序列论文-聚类和异常检测(二)

同样摘自知乎的回答:https://www.zhihu.com/question/29507442/answer/1212624591?utm_id0 正巧之前做过时间序列 的异常检测项目,这里介绍几种尝试过的方法,也算是抛砖引玉 吧,欢迎大家讨论交流~ 背景与定义 时间序列异常 检测…

c++实现数据结构栈和队列

1、栈 头文件 #ifndef ZHAN_H #define ZHAN_H#define MAX 8 #include <iostream> using namespace std;class Shu {int datatype; //入栈的数据int *arr; //栈的数组int top; //记录栈顶元素的下标public://构造函数Shu();//析构函数~Shu();//判断空int stack_empty…

COSCon'23 Call for Speakers

一年一度的开源盛会&#xff0c;COSCon23 第八届中国开源年会&#xff0c;将于10月28~29日&#xff0c;在四川成都市高新区菁蓉汇召开&#xff01; The yearly open source event, COSCon23 8th Annual China Open Source Conference, will be taken place on 28th~29th Octobe…

【编码魔法师系列_构建型1.1】简单工厂模式(Static Factory)

学会设计模式&#xff0c;你就可以像拥有魔法一样&#xff0c;在开发过程中解决一些复杂的问题。设计模式是由经验丰富的开发者们&#xff08;GoF&#xff09;凝聚出来的最佳实践&#xff0c;可以提高代码的可读性、可维护性和可重用性&#xff0c;从而让我们的开发效率更高。通…

让照片动起来的软件,轻松制作照片动效

随着社交媒体的日益普及&#xff0c;我们对于照片的要求也越来越高。普通的照片已经不能满足我们的需求&#xff0c;我们希望照片更加生动有趣。照片动效便应运而生&#xff0c;它可以让照片动起来&#xff0c;吸引更多的注意力&#xff0c;让照片更加生动有趣。 照片动效制作起…

软件验收测试

1. 服务流程 验收测试 2. 服务内容 测试过程中&#xff0c;根据合同要求制定测试方案&#xff0c;验证工程项目是否满足用户需求&#xff0c;软件质量特性是否达到系统的要求。 3. 周期 10-15个工作日 4. 报告用途 可作为进行地方、省级、国家、部委项目的验收&#xff0…

Java-华为真题-预定酒店

需求&#xff1a; 放暑假了&#xff0c;小王决定到某旅游景点游玩&#xff0c;他在网上搜索到了各种价位的酒店&#xff08;长度为n的数组A&#xff09;&#xff0c;他的心理价位是x元&#xff0c;请帮他筛选出k个最接近x元的酒店&#xff08;n>k>0&#xff09;&#xff…

JavaScript中的Generator函数及其使用方式

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ Generator函数⭐ 创建Generator函数⭐ 调用Generator函数⭐ Generator函数的应用1. 异步编程2. 生成器&#xff08;Generator&#xff09; ⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧…

L1-002 打印沙漏分数 20

L1-002 打印沙漏 分数 20 全屏浏览题目 切换布局 作者 陈越 单位 浙江大学 本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”&#xff0c;要求按下列格式打印 ************ *****所谓“沙漏形状”&#xff0c;是指每行输出奇数个符号&#xff1b;各行符…

23年11月PMP考试如何报名?如何备考?(含备考干货)

总分为4个步骤&#xff1a;英文报名--审核【抽中后快递材料审核】--中文报名--在线支付费用 一、PMP英文报名&#xff1a; 英文报名时间无限制&#xff0c;但有一年的有效期&#xff0c;所以大家尽量提前报名 二、审核&#xff1a; PMI网站对你英文报名的材料进行审核&…

Java——》synchronized锁升级

推荐链接&#xff1a; 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…

Win11共享文件夹怎么设置

当我们在使用Win11的过程中有时会因为一些操作需要共享文件夹&#xff0c;那么Win11系统该如何设置共享文件夹呢&#xff0c;下面小编就给大家详细介绍一下Win11设置共享文件夹的方法&#xff0c;有需要的小伙伴快来和小编一起看看吧。 Win11设置共享文件夹的方法&#xff1a;…

MySQL——无法打开MySQL8.0软件安装包或者安装过程中失败,如何解决?

在运行MySQL8.0软件安装包之前&#xff0c;用户需要确保系统中已经安装了.Net Framework相关软件&#xff0c;如果缺少此软件&#xff0c;将不能正常地安装MySQL8.0软件。 解决方案&#xff1a;到这个地址 https://www.microsoft.com/en-us/download/details.aspx?id42642…

如何查询成绩或工资

为什么每次查询成绩或者工资的时候都觉得麻烦又耗时呢&#xff1f;在过去&#xff0c;我们可能需要去学校或公司的相关部门&#xff0c;填写繁琐的表格&#xff0c;然后等待工作人员进行查询和处理。这不仅浪费了我们宝贵的时间&#xff0c;还可能出现查询结果不准确或者遗漏的…