Ответ 1
Вместо rimage
, возможно, используйте пакет ReadImages
:
library('ReadImages')
myjpg <- read.jpeg('E:/bigfoot.jpg')
plot(myjpg)
Я ищу простой способ построения фотографического изображения JPEG на графическом устройстве в R.
Например, следующее, использующее пакет raster
, игнорирует атрибуты цвета на изображении. Я хочу воспроизвести фотографию в ее исходных цветах:
library(raster)
library(rgdal)
myJPG <- raster("colourfulPic.jpg")
plot(myJPG) ## Recolours JPEG;
Я обнаружил, что пакет rimage
недавно был заархивирован и, как представляется, больше не рекомендуется использовать (см. здесь), если он действительно делал то, что мне нужно.
Аналогично, EBImage
для BioConductor, который также может работать, не построен для 64-битных Windows, и, к сожалению, мне нужна эта архитектура.
Скажите, пожалуйста, что я потерял что-то очень очевидное в базовой графике?
Вместо rimage
, возможно, используйте пакет ReadImages
:
library('ReadImages')
myjpg <- read.jpeg('E:/bigfoot.jpg')
plot(myjpg)
Здесь представлено обновленное решение, которое опирается только на пакет 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
- и будьте осторожны с ограничениями по оси!
Использование пакета imager
:
library(imager)
image <- load.image(image_filename)
plot(image)
Это работает для нескольких форматов изображений, включая jpeg
, gif
и т.д.
Если вы создаете документ RMarkdown, knitr::include_graphics()
является прямым и простым.
Обратите внимание, что ReadImages
теперь устарел. Вместо этого вы можете установить пакет biOps, который также содержит богатый набор методов обработки изображений. Используйте следующее:
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