Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用R中的基本图形绘制JPG图像_R - Fatal编程技术网

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

使用R中的基本图形绘制JPG图像,r,R,我正在寻找一种简单的方法,在R中的图形设备上打印JPEG图像 例如,使用光栅软件包的以下操作似乎忽略了图像中的颜色属性。我想用原色复制这张照片: library(raster) library(rgdal) myJPG <- raster("colourfulPic.jpg") plot(myJPG) ## Recolours JPEG; 库(光栅) 图书馆(rgdal) myJPG而不是笠美,可能使用软件包ReadImages: library('ReadImages') myjp

我正在寻找一种简单的方法,在R中的图形设备上打印JPEG图像

例如,使用
光栅
软件包的以下操作似乎忽略了图像中的颜色属性。我想用原色复制这张照片:

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)
from
jpeg
读取然后
rasterImage
from
graphics
打印大型图像会更加高效,因为它避免了
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],反之亦然,以修复错误。虽然此代码片段可能是解决方案,但确实有助于提高文章质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。