Keras深度学习:入门、实战与进阶
上QQ阅读APP看书,第一时间看更新

4.1.1 图像读取与保存

EBImage的基本功能包括图像的读取、显示和写入。使用readImage()函数读取图像,函数中的参数files表示需要读取的文件名或URL,参数type表示读取的图像文件格式,目前支持jpeg、png和tiff三种图像文件格式。

首先,我们将一张图像格式为jpg文件的灰色图像加载到R中。

> img <- readImage('../images/cat.jpg')

可以通过display()函数对刚刚加载的图像进行可视化,如图4-1所示。

> display(img ,method = 'browser')
100-1

图4-1 可交互的图像可视化

当display()函数的参数method为browser时,在R中运行命令后将在默认Web浏览器中打开图像,在RStudio中运行命令后将在View窗口打开可交互的图像。使用鼠标或者键盘快捷键可以放大或缩小图像、平移或循环显示多个图像。当参数method为raster时,表示在当前设备上绘制静态图像,我们还可以利用R的低级绘图函数在图像上添加其他元素。运行以下程序代码将在图像上添加文本标签,如图4-2所示。

> display(img,method = 'raster')
> text(x = 20,y = 20,label = 'cat',adj = c(0,1),col = 'orange',cex = 2)
100-2

图4-2 在图像中添加文本标签

绘制静态图像时,我们也可以使用plot()函数实现,如以下代码也可以实现图4-2的效果。

> plot(img)
> text(x = 20,y = 20,label = 'cat',adj = c(0,1),col = 'orange',cex = 2)

上面的示例读入的是黑白图像(或称灰色图像),也可以使用readImage()和display()函数轻松读入彩色照片。运行以下程序代码得到如图4-3所示图像。

> imgcol <- readImage('../images/cat-color.jpg')
> display(imgcol,method = 'raster')
101-1

图4-3 读取及显示彩色图像

我们可以使用writeImage()函数将图像保存到文件中,文件格式可以为jpeg、png和tiff。例如我们加载的是jpeg文件,现在将此图像另存为png文件。

> writeImage(img,'../images/cat.png')
> writeImage(imgcol,'../images/cat-color.png')
> list.files('../images')
[1] "cat-color.jpg" "cat-color.png" "cat.jpg"       "cat.png"

可见,在images文件夹中多了cat.png和cat-color.png两个png文件。在利用writeImage()函数将图像保存为jpeg文件格式时,还可以利用参数quality将压缩算法设置为1到100之间的质量值。默认为100,可以设置为较小的值以得到较小的文件,但这样会降低图像质量。