我正在寻找一种在R中的图形设备上绘制照片JPEG图像的简单方法。
例如,以下使用raster
包似乎忽略了图像中的颜色属性。我想以原始颜色再现照片:
library(raster)
library(rgdal)
myJPG <- raster("colourfulPic.jpg")
plot(myJPG) ## Recolours JPEG;
我发现软件包rimage
最近已经存档,似乎不再推荐使用(参见here),如果它确实能够满足我的需求。
类似地,BioConductor的EBImage
(也可能有效)不是为64位Windows构建的,不幸的是我需要这种架构。
请告诉我,我在基础图形中遗漏了一些非常明显的东西?
答案 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)
这适用于多种图片格式,包括jpeg
,gif
等...
答案 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