使用R中的基本图形绘制JPG图像
我正在寻找一种简单的方法,在R中的图形设备上打印JPEG图像 例如,使用使用R中的基本图形绘制JPG图像,r,R,我正在寻找一种简单的方法,在R中的图形设备上打印JPEG图像 例如,使用光栅软件包的以下操作似乎忽略了图像中的颜色属性。我想用原色复制这张照片: library(raster) library(rgdal) myJPG <- raster("colourfulPic.jpg") plot(myJPG) ## Recolours JPEG; 库(光栅) 图书馆(rgdal) myJPG而不是笠美,可能使用软件包ReadImages: library('ReadImages') myjp
光栅
软件包的以下操作似乎忽略了图像中的颜色属性。我想用原色复制这张照片:
library(raster)
library(rgdal)
myJPG <- raster("colourfulPic.jpg")
plot(myJPG) ## Recolours JPEG;
库(光栅)
图书馆(rgdal)
myJPG而不是笠美
,可能使用软件包ReadImages
:
library('ReadImages')
myjpg <- read.jpeg('E:/bigfoot.jpg')
plot(myjpg)
library('ReadImages')
myjpg请注意,ReadImages
现在已被弃用。相反,您可以安装,它还包含一组丰富的图像处理方法。使用方法如下:
library(jpeg)
library(biOps)
image <- readJPEG("test.jpg")
# image is of type imagedata (the red,green,blue channel images concatenated)
plot(image)
库(jpeg)
图书馆(传记)
image这里有一个更新的解决方案,它只依赖于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
-并小心轴限制 如果您正在构建RMarkdown文档,knitr::include_graphics()
非常直接和简单。使用imager
软件包:
library(imager)
image <- load.image(image_filename)
plot(image)
库(成像仪)
image光栅
有一个内置的函数,称为plotRGB
library(raster)
myJPG <- stack("colourfulPic.jpg")
plotRGB(myJPG)
库(光栅)
我知道这会很简单!有时候,找到合适的包裹就是一切。Thank.FWIW如果您关心性能或内存使用,那么使用readJPEG(…,native=TRUE)
fromjpeg
读取然后rasterImage
fromgraphics
打印大型图像会更加高效,因为它避免了ReadImages
所做的所有不必要的数组转换。不幸的是,软件包ReadImages
是孤立的,在CRAN上不再可用。它尚未更新,无法与R版本2.14.0及更新版本一起使用。注意:BiOps现在也不推荐使用。有没有简单的方法来打印JPEG图像?“jpeg”软件包似乎包含大量数据,并且需要大量CPU使用才能绘制。@Ratioveandi:我今天也遇到了同样的问题,我刚刚提出了另一个解决方案,它不依赖于biOps
或ReadImages
我必须反转分辨率才能获得正确的绘图。将res=dim(jpg)[1:2]更改为res=dim(jpg)[2:1]或将所有res[1]替换为res[2],反之亦然,以修复错误。虽然此代码片段可能是解决方案,但确实有助于提高文章质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。