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')
图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)
图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')
图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,可以设置为较小的值以得到较小的文件,但这样会降低图像质量。