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

本文主要是介绍OpenCV图像处理(二十--大结局)---OpencCV VS Matplotlib显示图像,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

科普

知识

前言

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

一、简介

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

1.1 用 OpenCV显示图像 

原始图像:

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

原始颜色显示:

#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()

显示结果:

灰度图像显示:

#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模式显示的,所以如果直接进行显示显示的话,将不会是我们想看到的结果,比如:

#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

#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()

显示结果:

灰度图像显示:

#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,不然显示出来还是色彩空间不对。

例如:

#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编程语言,达到尽可能熟练的程度,收拾旧山河,我们再出发……

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

往期精彩回顾

OpenCV图像处理(十九)---霍夫变换

OpenCV图像处理(十八)---图像之模板匹配

OpenCV图像处理(十五)---图像轮廓特征

扫码关注更多精彩

点亮在看,你最好看!

这篇关于OpenCV图像处理(二十--大结局)---OpencCV VS Matplotlib显示图像的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/373555

相关文章

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

RedisTemplate默认序列化方式显示中文乱码的解决

《RedisTemplate默认序列化方式显示中文乱码的解决》本文主要介绍了SpringDataRedis默认使用JdkSerializationRedisSerializer导致数据乱码,文中通过示... 目录1. 问题原因2. 解决方案3. 配置类示例4. 配置说明5. 使用示例6. 验证存储结果7.

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

VS配置好Qt环境之后但无法打开ui界面的问题解决

《VS配置好Qt环境之后但无法打开ui界面的问题解决》本文主要介绍了VS配置好Qt环境之后但无法打开ui界面的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目UKeLvb录找到Qt安装目录中designer.UKeLvBexe的路径找到vs中的解决方案资源

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

C/C++中OpenCV 矩阵运算的实现

《C/C++中OpenCV矩阵运算的实现》本文主要介绍了C/C++中OpenCV矩阵运算的实现,包括基本算术运算(标量与矩阵)、矩阵乘法、转置、逆矩阵、行列式、迹、范数等操作,感兴趣的可以了解一下... 目录矩阵的创建与初始化创建矩阵访问矩阵元素基本的算术运算 ➕➖✖️➗矩阵与标量运算矩阵与矩阵运算 (逐元

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

C/C++和OpenCV实现调用摄像头

《C/C++和OpenCV实现调用摄像头》本文主要介绍了C/C++和OpenCV实现调用摄像头,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录准备工作1. 打开摄像头2. 读取视频帧3. 显示视频帧4. 释放资源5. 获取和设置摄像头属性

c/c++的opencv图像金字塔缩放实现

《c/c++的opencv图像金字塔缩放实现》本文主要介绍了c/c++的opencv图像金字塔缩放实现,通过对原始图像进行连续的下采样或上采样操作,生成一系列不同分辨率的图像,具有一定的参考价值,感兴... 目录图像金字塔简介图像下采样 (cv::pyrDown)图像上采样 (cv::pyrUp)C++ O