мне было достаточно любопытно попробовать это; очевидно, что пакет является лучшим решением, но если вы действительно хотите придерживаться базы R, это будет загружать png (хотя и вверх дном и назад, это, вероятно, исправление). Он предполагает наличие инструментов netpbm, поэтому, вероятно, не будет работать из коробки в системах Windows.
readPng <- function(pngFile) {
contents <- system(paste('pngtopnm',pngFile,'| pnmtoplainpnm'),intern=TRUE)
imgDims <- strsplit(contents[2], ' ')
width <- as.numeric(imgDims[[1]][1])
height <- as.numeric(imgDims[[1]][2])
rawimg <- scan(textConnection(contents),skip=3)
return(list(
x=1:width,
y=1:height,
z=matrix(rawimg,width),
width=width,
height=height))
}
Вы можете запустить image(img)
на список, возвращаемый из этой функции непосредственно, или получить доступ к значениям попиксельных с помощью IMG $ Z.
Не в тему Я думаю, что это не статистический вопрос. Наверное, лучше для R-help, чем здесь. Но есть такие пакеты, как bmp, readbitmap, pixmap и растр, которые могут делать то, что вы хотите - в зависимости от того, что это (я не совсем вижу ссылку на основные компоненты). –
Команда 'image' позволит вам отображать простые оттенки серого или индексированные изображения, например. (1: 100,1: 100, (1: 100)% *% t (1: 100)/100, col = rgb (1: 100/100,1: 100/100,1: 100/100)) ', но пакет EBImage, о котором @MattBagg говорит ниже, выглядит намного лучше. Насколько я знаю, база R не поддерживает загрузку изображений, поэтому вам придется предварительно обрабатывать netpbm или аналогичные. – user295691
Для обработки изображений доступны два пакета: EBImage и adimpro. – marbel