OpenCV-Python开发指南(30)---图像的输入输出与显示

前言

在讲解后面的采样以及傅里叶变换之前,我们需要掌握python对图像的输入、输出以及显示等操作。

本篇涉及都是简单的图像显示保存等操作,但是后面基于此复杂的变换都会或多或少用到这些知识。所以,别看非常简单,应用起来还是非常多的。

使用PIL读取,保存和显示图像

在PIL包中,使用Image.open()函数读取磁盘图像。获取图像后,我们可以完整的获取图像的宽高,分辨率等信息。

from PIL import Image

img=Image.open("4.jpg")

print("图像宽度:"+str(img.width))
print("图像高度:"+str(img.height))
print("图像分辨率:"+img.format)
print("图像模式:"+img.mode)

img.show()

运行之后,图片这些信息都会完整的显示出来:
图像信息
而对于识别图像内容来说,我们一般都是将图像转换为灰度图像。而PIL包转换为恢复图像的方式如下:

img=Image.open("4.jpg")
imgL=img.convert("L")
imgL.show()

运行之后,灰度图像会通过默认的电脑图片显示程序,显示出来。
灰度图像
至于存储图像,我们通过如下代码实现:

imgL.save("1111111.jpg")

使用matplotlib读取,保存和显示图像

在OpenCV中,我们对图像进行直方图处理的时候,会经常辅助用到matplotlib包。所以,我们有必要掌握matplotlib包读取,保存与显示图像。

from matplotlib.image import imread
import matplotlib.pyplot as plt

img = imread("4.jpg")#读取图像
print(img.shape, img.dtype, type(img))#输出图像的参数
plt.figure(figsize=(10, 10))
plt.axis("off")#不显示坐标轴
#显示图像
plt.imshow(img)
plt.show()
plt.savefig("11111.jpg")#保存图像

上面注释非常详细,这里就不在赘述。不过,其imshow()方法还有一个插值参数interpolation。

plt.imshow(img,interpolation="spline16")

通过interpolation参数,我们可以使用不同的插值对图像进行处理。

使用scikit-image读取,保存和显示图像

scikit-image包与PIL一样,可以读取图像后获取图像的详细参数信息。同时,它也可以与OpenCV一样进行色彩空间的转换。

from skimage import io,color
import matplotlib.pyplot as plt
img=io.imread("4.jpg")#读取图像
print(img.shape,img.dtype,type(img))#输出图像参数
plt.axis("off")#去除坐标轴
io.imsave("11111.jpg",img)#保存图像
hsv=color.rgb2hsv(img)#图像转换为hsv色彩空间
#显示图像
plt.imshow(hsv)
plt.show()

scikit-image与matplotlib读取后的格式都是numpy.ndarray。
控制台
HSV
下面是skimage库子模块:

模块 作用
io 读取,保存和显示图片和视频
color 色彩空间变换
data 提供一些测试图片和样本数据
filters 图像增强,边缘检测,排序滤波器,自动阈值等
draw 操作于numpy数组上的基本图形绘制,包括线条,矩阵,圆和文本等
transform 几何变换和其他变换,如旋转,拉伸和Radon(拉东)变换等
exposure 图像强度调整,例如,直方图均衡化等
feature 特征检测和提取, 例如,纹理分析等
graph 图论操作,例如,最短路径
measure 图像属性测量,例如,相似度和轮廓
morphology 形态学操作,如开闭运算,骨架提取等
novice 简化的用于教学目的的接口
restoration 修复算法,例如去卷积算法,去噪等
segmentation 图像分割为多个区域
util 通用工具
viewer 简单图形用户界面用于可视化结果和探索参数

猜你喜欢

转载自blog.csdn.net/liyuanjinglyj/article/details/113982175
今日推荐