Создайте изображение JPG с использованием базовой графики в R - программирование
Подтвердить что ты не робот

Создайте изображение JPG с использованием базовой графики в R

Я ищу простой способ построения фотографического изображения JPEG на графическом устройстве в R.

Например, следующее, использующее пакет raster, игнорирует атрибуты цвета на изображении. Я хочу воспроизвести фотографию в ее исходных цветах:

library(raster)
library(rgdal)

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

Я обнаружил, что пакет rimage недавно был заархивирован и, как представляется, больше не рекомендуется использовать (см. здесь), если он действительно делал то, что мне нужно.

Аналогично, EBImage для BioConductor, который также может работать, не построен для 64-битных Windows, и, к сожалению, мне нужна эта архитектура.

Скажите, пожалуйста, что я потерял что-то очень очевидное в базовой графике?


4b9b3361

Ответ 1

Вместо rimage, возможно, используйте пакет ReadImages:

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

Ответ 2

Здесь представлено обновленное решение, которое опирается только на пакет 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 - и будьте осторожны с ограничениями по оси!

Ответ 3

Использование пакета imager:

library(imager)

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

Это работает для нескольких форматов изображений, включая jpeg, gif и т.д.

Ответ 4

Если вы создаете документ RMarkdown, knitr::include_graphics() является прямым и простым.

Ответ 5

Обратите внимание, что 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