使用R中的基本图形绘制JPG图像

时间:2012-03-03 04:04:46

标签: r

我正在寻找一种在R中的图形设备上绘制照片JPEG图像的简单方法。

例如,以下使用raster包似乎忽略了图像中的颜色属性。我想以原始颜色再现照片:

library(raster)
library(rgdal)

myJPG <- raster("colourfulPic.jpg")
plot(myJPG)  ## Recolours JPEG;

我发现软件包rimage最近已经存档,似乎不再推荐使用(参见here),如果它确实能够满足我的需求。

类似地,BioConductor的EBImage(也可能有效)不是为64位Windows构建的,不幸的是我需要这种架构。

请告诉我,我在基础图形中遗漏了一些非常明显的东西?


6 个答案:

答案 0 :(得分:25)

这是一个更新的解决方案,仅依赖于jpeg包并处理颜色和灰度图像(其他解决方案中使用的包已过时,并且最近安装了R版< /强>)。

解决方案包括此绘图功能:

plot_jpeg = function(path, add=FALSE)
{
  require('jpeg')
  jpg = readJPEG(path, native=T) # read the file
  res = dim(jpg)[2:1] # get the resolution, [x, y]
  if (!add) # initialize an empty plot area if add==FALSE
    plot(1,1,xlim=c(1,res[1]),ylim=c(1,res[2]),asp=1,type='n',xaxs='i',yaxs='i',xaxt='n',yaxt='n',xlab='',ylab='',bty='n')
  rasterImage(jpg,1,1,res[1],res[2])
}

然后可以使用图片的路径作为参数调用此函数,例如:

plot_jpeg('~/nyancat.jpg')

要将图片添加到现有图表,请使用开关add=TRUE - 并警惕轴限制!

答案 1 :(得分:4)

使用imager包:

library(imager)

image <- load.image(image_filename)
plot(image)

这适用于多种图片格式,包括jpeggif等...

答案 2 :(得分:3)

而不是rimage,也许使用包ReadImages

library('ReadImages')
myjpg <- read.jpeg('E:/bigfoot.jpg')
plot(myjpg)

答案 3 :(得分:3)

如果您要构建RMarkdown文档,knitr::include_graphics()是直接且简单的。

答案 4 :(得分:1)

raster具有内置功能,称为plotRGB

library(raster)  
myJPG <- stack("colourfulPic.jpg")  
plotRGB(myJPG)  

答案 5 :(得分:-1)

请注意,ReadImages现已弃用。相反,你可以安装biOps package,它还包含一组丰富的图像处理方法。使用方法如下:

library(jpeg)
library(biOps)

image <- readJPEG("test.jpg")

# image is of type imagedata (the red,green,blue channel images concatenated)

plot(image)

编辑:imagedata类型的对象被访问为image[Y,X,Channel],btw