前言
图像是计算机视觉领域的基本数据载体,理解图像的读取、显示与保存是进行图像处理、分析和识别的第一步。
本节课我们不光是为了学习处理图像的那些方法如何使用,更重要的是从本节课学习能让你对计算机世界中的图像有一个更清晰的认识。
在本课程中,我们将学习如何使用Matplotlib和OpenCV库来实现图像的读取、显示和保存操作。我们将从最基本的图像处理开始,介绍图像读取的方法,讨论图像的通道顺序,然后深入探讨图像的显示与可视化,以及图像的保存格式和质量参数。上节课我们探讨了计算机世界中图像的概念,而本节课我们将通过代码实际展示图像数据,从而深入了解图像处理的实际操作过程。
一、导入包
import cv2
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
cv2:是opencv,opencv提供了丰富的图像处理和计算机视觉算法,通过它可以调用OpenCV中的各种函数来实现图像读取、处理、分析等操作。
numpy:提供了对多维数组的处理各种方法,我们可以用他处理图像的数组数据
matplotlib:用于显示图像、绘制图表和可视化数据。方便我们一会绘图的展示。
%matplotlib inline:这行意思是我们展示图直接在jupyter中显示,而不是在打开一个外部的窗口显示我们的图片,这样方便我们查看。另外说明一下在jypyter中每行代码都需要我们单独去执行一下,如果上面代码不执行 我们直接执行下面的代码就会出错。执行代码的快捷键是shift+enter
二、图像的读取
image = cv2.imread(filename, flags)
flags 是一个可选参数,用于指定读取图像的方式。常用的取值有:
cv2.IMREAD_COLOR:以彩色模式读取图像(默认)。
cv2.IMREAD_GRAYSCALE:以灰度模式读取图像。
cv2.IMREAD_UNCHANGED:保持图像原有的通道数,包括 alpha 通道。
imread() 函数会返回一个 numpy 数组,代表读取的图像数据。如果指定的文件路径不存在或者文件格式不正确,imread() 函数会返回一个空的 numpy
比如我本地有一个图片 我可以使用下面代码读取我本地的图片
img = cv2.imread('./img/image.jpg')
我们查看下img的内容:
可以看到返回的数据是一个三维数组,其中的1维数组表示一个像素点,比如70,88,111就是表示第一个像素,结合我们上面一节的课程,我们知道每个像素点是由RGB三个值组成的。这个三维数 组表示,图像的高度,即像素的行数和像素的宽度 ,即像素的列数。
还有图片的通道,我们可以通过cv2.shape看下图像维度信息
显示:
(480, 320, 3) #这个代表高度是480像素,宽度是320像素,是3个通道
三、图片的显示
1、在jupyter中显示图片
我们显示图片看一下:
plt.imshow(img)
我们发现图片显示的有点奇怪,不是我的原图。这是为什么呢?因为我们通过opencv导入的图片默认的通道是BGR,而matplotlib处理图片默认则是以RGB的方式,所以读取和显示的通道顺序反了导致显示的图片不正常,我们需要手动转换一下通道顺序,我们吧opencv读取的图片通道顺序改为RGB这样就能和matplotlib一致了,
img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
我们查看下转换后的图片,现在显示的就正常了
2、在窗口中显示图片
cv2.imshow('demo',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
上面代码可以在窗口中显示图片 waitkey就是等待我们输入,也就是我们按了任意键之后执行后面的代码 销毁窗口,因为这个使用cv2显示的,读取也是cv2,所以不用对通道进行转换 就能正常显示。
四、图片的保存
当我们对图像做了一系列处理之后,想把图片保存出来,可以使用以下方法
1、使用opencv保存:文章来源:https://www.toymoban.com/news/detail-830844.html
cv2.imwrite('output_image.jpg', img)
2、使用Matplotlib保存文章来源地址https://www.toymoban.com/news/detail-830844.html
# 将 BGR 转换为 RGB
image_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# 保存图像(Matplotlib 保存的图像通道顺序是 RGB)
plt.imsave('output_image.jpg', image_rgb)
到了这里,关于四、计算机视觉-图像的读取显示与保存的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!