Loading [MathJax]/jax/output/CommonHTML/config.js
部署DeepSeek模型,进群交流最in玩法!
立即加群
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >OpenCV图像处理(二十--大结局)---OpencCV VS Matplotlib显示图像

OpenCV图像处理(二十--大结局)---OpencCV VS Matplotlib显示图像

作者头像
用户5410712
发布于 2022-06-01 11:18:23
发布于 2022-06-01 11:18:23
76300
代码可运行
举报
文章被收录于专栏:居士说AI居士说AI
运行总次数:0
代码可运行

机械能是动能与势能的总和,这里的势能分为重力势能和弹性势能。我们把动能、重力势能和弹性势能统称为机械能。决定动能的是质量与速度;决定重力势能的是质量和高度;决定弹性势能的是劲度系数与形变量。机械能只是动能与势能的和。机械能是表示物体运动状态与高度的物理量。物体的动能和势能之间是可以转化的。在只有动能和势能相互转化的过程中,机械能的总量保持不变,即机械能是守恒的。

前言

又是一周见面时,在上期的文章中,我们学习了图像的霍夫变换,它其实是将当前空间的做坐标转换到另一空间的坐标中进行物体形状的检测,包括我们熟知的圆形,直线等等。相信大家看到标题已经知道了本篇文章将是opencv图像处理的最后一篇,因为在opencv图像处理中比较常用的算子我们已经介绍的差不多了,更多的是比较专业的图像处理,这里就不去叙述了,作为本专栏的最后一篇文章,我们不讲太深奥的,就从最开始的基础,回归一下显示图像的问题,我们从哪里出发,就从哪里回去。今天我们继续来学习图像的另一个知识--OpenCV VS Matplotlib显示图像。

一、简介

在之前的文章中,图像显示问题已将讲过很多次了,也用代码进行了多次实操,相信在大家的眼中,显示就是cv2.imshow()这么简单,的确如此,但,今天的内容将会告诉我们,图像的通道顺序将会影响图像的显示结果,为此我们用到了Matplotlib这个图像显示数学工具包来进行比较,一起来看看吧!

1.1 用 OpenCV显示图像

原始图像:

(从你的全世界路过----稻城亚丁)

原始颜色显示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#coding:utf-8
# 导入图像显示所用到的包
import cv2
# 显示彩色图像  可认为默认为图像原始色彩
# 导入图片位置
img_path = './img.jpg'
# 读取图像
src_img = cv2.imread(img_path)
# 获取图像高度和宽度
img_info = src_img.shape
print("图像的高度为:{} 高度为:{} 通道数为:{}".format(img_info[0],img_info[1],img_info[2]))
# 显示图像
cv2.imshow("src_img",src_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

显示结果:

灰度图像显示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#coding:utf-8
# 导入图像显示所用到的包
import cv2
# 显示彩色图像  可认为默认为图像原始色彩
# 导入图片位置
img_path = './img.jpg'
# 读取灰度图像
src_img = cv2.imread(img_path,0)
# 获取图像高度和宽度
img_info = src_img.shape
print("图像的高度为:{} 高度为:{}".format(img_info[0],img_info[1]))
# 显示图像
cv2.imshow("src_img",src_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

显示结果:

1.2 用 Matplotlib 显示图像

原始图像:

原始颜色显示:

还记得我们之前说过,OpenCV中的图像是以BGR的通道顺序存储的,然而今天所讲的Matplotlib是以RGB模式显示的,所以如果直接进行显示显示的话,将不会是我们想看到的结果,比如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#coding:utf-8
# 导入图像显示所用到的包
import cv2
import matplotlib.pyplot as plt

# 显示彩色图像  可认为默认为图像原始色彩
# 导入图片位置
img_path = './img.jpg'
img = cv2.imread(img_path)
# 灰度图显示,cmap(color map)需要设定为gray
plt.imshow(img)
plt.show()

显示结果:

正确的显示:需要将图像通道进行转换为RGB

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#coding:utf-8
# 导入图像显示所用到的包
import cv2
import matplotlib.pyplot as plt

# 显示彩色图像  可认为默认为图像原始色彩
# 导入图片位置
img_path = './img.jpg'
img = cv2.imread(img_path)
img_cvt = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# 灰度图显示,cmap(color map)需要设定为gray
plt.imshow(img_cvt)
plt.show()

显示结果:

灰度图像显示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#coding:utf-8
# 导入图像显示所用到的包
import cv2
import matplotlib.pyplot as plt

# 显示彩色图像  可认为默认为图像原始色彩
# 导入图片位置
img_path = './img.jpg'
img = cv2.imread(img_path,0)
# 灰度图显示,cmap(color map)需要设定为gray
plt.imshow(img, cmap='gray')
plt.show()

显示结果:

分析:仔细观看代码就会发现,opencv读取后的图像已经是灰度图了,但是在用plt显示的时候,还得在参数汇总加上gray,不然显示出来还是色彩空间不对。

例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#coding:utf-8
# 导入图像显示所用到的包
import cv2
import matplotlib.pyplot as plt

# 显示彩色图像  可认为默认为图像原始色彩
# 导入图片位置
img_path = './img.jpg'
img = cv2.imread(img_path) # 这里为直接读取原始图像
# 灰度图显示,cmap(color map)需要设定为gray
plt.imshow(img, cmap='gray')
plt.show()

显示结果:

结语

本篇文章是OpenCV专栏的最后一篇文章,熟悉的粉丝们应该知道,在这个栏目我们主要讲解了OpenCV的各种图像处理算子和代码,并没有涉及到太多的实际图像处理任务中,OpenCV专栏从基础出发,到基础截止,期待想学习的朋友们都能够掌握专栏的全部内容,至于后期是否会开出OpenCV实战类栏目,我们敬请期待!

从下一期文章起,我们将会回归到python的实战和提升篇文章,继续学习我们的python编程语言,达到尽可能熟练的程度,收拾旧山河,我们再出发……

编辑:玥怡居士|审核:小圈圈居士

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT进阶之旅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【OpenCV】Chapter1.图像的基本操作
扩展使用: 可以通过cv2.namedWindow和cv2.resizeWindow来指定窗口显示尺寸。
zstar
2022/09/21
1.1K0
OpenCV 4基础篇| OpenCV图像基本操作
游戏开发小Y
2024/02/25
4880
OpenCV 4基础篇| OpenCV图像基本操作
OpenCV图像处理(十三)---图像滤波
热力学第一定律(the first law of thermodynamics)就是不同形式的能量在传递与转换过程中守恒的定律,表达式为△U=Q+W。表述形式:热量可以从一个物体传递到另一个物体,也可以与机械能或其他能量互相转换,但是在转换过程中,能量的总值保持不变。其推广和本质就是著名的能量守恒定律。
用户5410712
2022/06/01
5010
OpenCV图像处理(十三)---图像滤波
Opencv 图像处理:图像基础操作与灰度转化
Opencv读取图像是以BGR读取的,但是许多包是RGB读取,因此有些情况下需要转化。
timerring
2022/11/02
1.9K0
Opencv 图像处理:图像基础操作与灰度转化
机器学习-09-图像处理02-PIL+numpy+OpenCV实践
开源地理空间基金会中文分会 Pillow (PIL Fork) 10.0.1 文档
用户2225445
2024/04/14
5840
机器学习-09-图像处理02-PIL+numpy+OpenCV实践
OpenCV图像处理(十九)---霍夫变换
内能(internal energy) 从微观的角度来看,是分子无规则运动能量总和的统计平均值。分子无规则运动的能量包括分子的动能、分子间相互作用势能以及分子内部运动的能量。物体的内能不包括这个物体整体运动时的动能和它在重力场中的势能。
用户5410712
2022/06/01
6940
OpenCV图像处理(十九)---霍夫变换
[Python图像处理] 十四.基于OpenCV和像素处理的图像灰度化处理
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门、OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子、图像增强技术、图像分割等,后期结合深度学习研究图像识别、图像分类应用。希望文章对您有所帮助,如果有不足之处,还请海涵~
Eastmount
2022/11/25
2.7K0
常见的图像处理技术
深度学习对于图像的分析、识别以及语义理解具有重要意义。“图像分类”、“对象检测”、“实例分割”等是深度学习在图像中的常见应用。为了能够建立更好的训练数据集,我们必须先深入了解基本的图像处理技术,例如图像增强,包括裁剪图像、图像去噪或旋转图像等。其次基本的图像处理技术同样有助于光学字符识别(OCR)。
小白学视觉
2020/08/28
2.7K0
【OpenCV】Chapter4.灰度变换与直方图
二值图像指的是只有黑色和白色两种颜色的图像。每个像素点可以用 0/1 表示,0 表示黑色,1 表示白色。 OpenCV提供了cv2.threshold,可以对图像进行二值化处理。
zstar
2022/09/22
1.4K0
【OpenCV】Chapter4.灰度变换与直方图
Opencv 图像处理:图像通道、直方图与色彩空间
将彩色图像,分成b 、g 、r 3个单通道图像。方便我们对 BGR 三个通道分别进行操作。
timerring
2022/11/02
2.2K0
Opencv 图像处理:图像通道、直方图与色彩空间
【计算机视觉】OpenCV图像处理基础
OpenCV是目前最流行的计算机视觉处理库之一,受到了计算机视觉领域众多研究人员的喜爱。计算机视觉是一门研究如何让机器“看”的科学,即用计算机来模拟人的视觉机理,用摄像头代替人眼对目标进行识别、跟踪和测量等,通过处理视觉信息获得更深层次的信息。例如,通过拍摄环绕建筑物一周的视频,利用三维重建技术重建建筑物三维模型;通过放置在车辆上方的摄像头拍摄前方场景,推断车辆能否顺利通过前方区域等决策信息。对于人类来说,通过视觉获取环境信息是一件非常容易的事情,因此有人会误认为实现计算机视觉是一件非常容易的事情。但事实不是这样的,因为计算机视觉是一个逆问题,通过观测到的信息恢复被观测物体或环境的信息,在这个过程中会缺失部分信息,造成信息不足,增加问题的复杂性。例如,当通过单个摄像头拍摄场景时,因为失去了距离信息,所以常会出现图像中“人比楼房高”的现象。因此,计算机视觉领域的研究还有很长的路要走。
蒙娜丽宁
2023/03/08
2.3K0
【计算机视觉】OpenCV图像处理基础
[Python图像处理] 五.图像融合、图像加减法、图像逻辑运算及图像类型转换
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门、OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子、图像增强技术、图像分割等,后期结合深度学习研究图像识别、图像分类、目标检测应用。
Eastmount
2021/12/02
5.5K0
[Python图像处理] 五.图像融合、图像加减法、图像逻辑运算及图像类型转换
[Python图像处理] 二十.图像量化处理和采样处理及局部马赛克特效
前面一篇文章我讲解了基于K-Means聚类的图像分割或量化处理,但突然发现市场上讲解图像量化和采样代码的文章很缺乏,因此结合2015年自己的一篇 文章 及相关知识,分享一篇Python图像量化及处理的博文供同学们学习。基础性文章,希望对你有所帮助。
Eastmount
2023/09/01
1.1K0
[Python图像处理] 二十.图像量化处理和采样处理及局部马赛克特效
关于OpenCV for Python入门-图片和摄像头显示
OpenCV和Python结合的学习资料不多,网上的资料更是鱼目混杂,推荐大家OpenCV官方教程中文版 for Python,建议自行下载。
python与大数据分析
2022/04/02
1.4K0
关于OpenCV for Python入门-图片和摄像头显示
【python-opencv】读取、显示、写入图像
cv.waitKey()是一个键盘绑定函数。其参数是以毫秒为单位的时间。该函数等待任何键盘事件指定的毫秒。如果您在这段时间内按下任何键,程序将继续运行。如果0被传递,它将无限期地等待一次敲击键。它也可以设置为检测特定的按键,例如,如果按下键 a 等,我们将在下面讨论。
西西嘛呦
2020/08/26
1.6K0
【OpenCV】Chapter9.边缘检测与图像分割
边缘检测的原理和matlab实现在我之前这两篇博文中提到过,这里不再赘述。 【计算机视觉】基础图像知识点整理【计算机视觉】数字图像处理基础知识题 此次来看OpenCV的实现方式。
zstar
2022/09/28
1.5K0
【OpenCV】Chapter9.边缘检测与图像分割
OpenCV图像处理(十七)---图像直方图均衡化
欧姆定律是指在同一电路中,通过某段导体的电流跟这段导体两端的电压成正比,跟这段导体的电阻成反比。该定律是由德国物理学家乔治·西蒙·欧姆1826年4月发表的《金属导电定律的测定》论文提出的。
用户5410712
2022/06/01
4230
OpenCV图像处理(十七)---图像直方图均衡化
[Python图像处理] 三.获取图像属性、兴趣ROI区域及通道处理
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门、OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子、图像增强技术、图像分割等,后期结合深度学习研究图像识别、图像分类应用。希望文章对您有所帮助,如果有不足之处,还请海涵~
Eastmount
2021/12/02
3K0
[Python图像处理] 三.获取图像属性、兴趣ROI区域及通道处理
OpenCV 系列教程1 | OpenCV 的 GUI 特性
Matplotlib是一个用于Python的绘图库,它提供了多种绘图方法。在这里,将学习如何使用 Matplotlib 显示图像。可以使用 Matplotlib 放大图片,保存图片等。
机器视觉CV
2019/07/15
3.6K0
OpenCV 系列教程1 | OpenCV 的 GUI 特性
【OpenCV】Chapter5.空间域图像滤波
边界扩充顾名思义就是扩大图像的边界。 OpenCV 中提供了函数 cv.copyMakeBorder 进行边界扩充方式。
zstar
2022/09/23
5000
【OpenCV】Chapter5.空间域图像滤波
推荐阅读
相关推荐
【OpenCV】Chapter1.图像的基本操作
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验