Tôi đã đủ tò mò muốn thử loại này ra; rõ ràng một gói là một giải pháp tốt hơn, nhưng nếu bạn thực sự muốn dính vào cơ sở R, điều này sẽ tải một png (mặc dù lộn ngược và ngược, đó có thể là fixable). Nó giả định sự hiện diện của các công cụ netpbm, vì vậy có lẽ sẽ không làm việc ra khỏi hộp trên các hệ thống 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))
}
Bạn có thể chạy trực tiếp image(img)
trên danh sách trực tiếp hoặc truy cập giá trị mỗi pixel bằng img $ z.
Tắt chủ đề Tôi nghĩ không phải là câu hỏi thống kê. Có lẽ tốt hơn cho R-giúp đỡ hơn ở đây. Nhưng có những gói như bmp, readbitmap, pixmap, và raster có thể làm những gì bạn muốn - tùy thuộc vào chính xác những gì đó là (tôi không hoàn toàn thấy liên kết đến các thành phần chính). –
Lệnh 'image' sẽ cho phép bạn hiển thị hình ảnh lập chỉ mục hoặc thang độ xám đơn giản, ví dụ: 'hình ảnh (1: 100,1: 100, (1: 100)% *% t (1: 100)/100, col = rgb (1: 100/100,1: 100/100,1: 100/100)) ', nhưng gói EBImage mà @MattBagg nói về bên dưới có vẻ vượt trội hơn rất nhiều. Theo như tôi biết, cơ sở R không có hỗ trợ tải hình ảnh, vì vậy bạn sẽ phải tiền xử lý với netpbm hoặc tương tự. – user295691
Có hai gói có sẵn để xử lý hình ảnh: EBImage và adimpro. – marbel