byłem na tyle ciekawy, aby spróbować to na zewnątrz; najwyraźniej pakiet jest lepszym rozwiązaniem, ale jeśli naprawdę chcesz trzymać się R, to załaduje png (choć do góry nogami i do tyłu, to prawdopodobnie można naprawić). Zakłada obecność narzędzi netpbm, więc prawdopodobnie nie będzie działać po wyjęciu z pudełka w systemach 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))
}
można uruchomić image(img)
na liście zwrócony z tej funkcji bezpośrednio, lub dostęp do wartości na piksel używając img $ z.
Wątek nie jest pytaniem statystycznym. Prawdopodobnie lepiej dla R-pomocy niż tutaj. Ale są pakiety takie jak bmp, readbitmap, pixmap i raster, które mogą robić, co chcesz - w zależności od tego, co dokładnie jest (nie całkiem widzę link do głównych składników). –
Polecenie 'image' pozwala wyświetlać proste obrazy w skali szarości lub indeksowane, np. 'image (1: 100,1: 100, (1: 100)% *% t (1: 100)/100, col = rgb (1: 100/100,1: 100/100,1: 100/100)) ', ale pakiet EBImage, o którym @MattBagg mówi poniżej, wydaje się znacznie lepszy. O ile mi wiadomo, baza R nie obsługuje ładowania obrazów, więc musiałbyś preprocesować z netpbm lub podobnym. – user295691
Dostępne są dwa pakiety do przetwarzania obrazu: EBImage i adimpro. – marbel