Для начала вам понадобится способ сделать снимок экрана и сохранить его (временный) файл.Лучший способ, который я нашел (используя this и this ), это использование ImageMagick .
Если у вас установлен ImageMagick, вы можете использовать следующую функцию / скрипт R для захвата экрана, загрузки данных и отображения данных в R (вы можете настроить аргументы в зависимости от желаемого разрешения и т. Д.).
Наконец, если вы хотите сделать больше с изображением, я рекомендую пакет imager
.
Сценарий и загрузите изображение в R
library(imager) # for loading and plotting of the PNG file
library(glue) # for string parsing
capture_screen <- function(file = "screenshot.png") {
system(glue("import -window root -resize 2560x1440 -delay 200 {file}"))
invisible(file)
}
file <- capture_screen()
shot <- load.image(file)
shot
#> Image. Width: 2560 pix Height: 1440 pix Depth: 1 Colour channels: 3
shot[1:10, 1:10, ]
#> , , 1
#>
#> [,1] [,2] [,3] [,4] [,5] [,6]
#> [1,] 0.3440452 0.3385519 0.3357443 0.3331807 0.3284199 0.3248798
#> [2,] 0.3440452 0.3385519 0.3357443 0.3331807 0.3284199 0.3248798
#> [3,] 0.3440452 0.3385519 0.3357443 0.3331807 0.3284199 0.3248798
#> [4,] 0.3440452 0.3385519 0.3357443 0.3331807 0.3284199 0.3248798
#> [5,] 0.3440452 0.3385519 0.3357443 0.3331807 0.3284199 0.3248798
#> [6,] 0.3440452 0.3385519 0.3357443 0.3331807 0.3284199 0.3248798
#> [7,] 0.3440452 0.3385519 0.3357443 0.3331807 0.3284199 0.3248798
#> [8,] 0.3440452 0.3385519 0.3357443 0.3331807 0.3284199 0.3248798
#> [9,] 0.3440452 0.3385519 0.3357443 0.3331807 0.3284199 0.3248798
#> [10,] 0.3440452 0.3385519 0.3357443 0.3331807 0.3284199 0.3248798
#> [,7] [,8] [,9] [,10]
#> [1,] 0.3221790 0.3186389 0.3138781 0.3112993
#> [2,] 0.3221790 0.3186389 0.3138781 0.3112993
#> [3,] 0.3221790 0.3186389 0.3138781 0.3112993
#> [4,] 0.3221790 0.3186389 0.3138781 0.3112993
#> [5,] 0.3221790 0.3186389 0.3138781 0.3112993
#> [6,] 0.3221790 0.3186389 0.3138781 0.3112993
#> [7,] 0.3221790 0.3186389 0.3138781 0.3112993
#> [8,] 0.3221790 0.3186389 0.3138781 0.3112840
#> [9,] 0.3221790 0.3186389 0.3138018 0.3109636
#> [10,] 0.3221942 0.3185931 0.3136797 0.3123674
#>
#> , , 2
#>
#> [,1] [,2] [,3] [,4] [,5] [,6]
#> [1,] 0.3319905 0.3292439 0.3244831 0.3209583 0.3181506 0.3152209
#> [2,] 0.3319905 0.3292439 0.3244831 0.3209583 0.3181506 0.3152209
#> [3,] 0.3319905 0.3292439 0.3244831 0.3209583 0.3181506 0.3152209
#> [4,] 0.3319905 0.3292439 0.3244831 0.3209583 0.3181506 0.3152209
#> [5,] 0.3319905 0.3292439 0.3244831 0.3209583 0.3181506 0.3152209
#> [6,] 0.3319905 0.3292439 0.3244831 0.3209583 0.3181506 0.3152209
#> [7,] 0.3319905 0.3292439 0.3244831 0.3209583 0.3181506 0.3152209
#> [8,] 0.3319905 0.3292439 0.3244831 0.3209583 0.3181506 0.3152209
#> [9,] 0.3319905 0.3292439 0.3244831 0.3209583 0.3181506 0.3152209
#> [10,] 0.3319905 0.3292439 0.3244831 0.3209583 0.3181506 0.3152209
#> [,7] [,8] [,9] [,10]
#> [1,] 0.3121691 0.3096513 0.3048905 0.3013504
#> [2,] 0.3121691 0.3096513 0.3048905 0.3013504
#> [3,] 0.3121691 0.3096513 0.3048905 0.3013504
#> [4,] 0.3121691 0.3096513 0.3048905 0.3013504
#> [5,] 0.3121691 0.3096513 0.3048905 0.3013504
#> [6,] 0.3121691 0.3096513 0.3048905 0.3013504
#> [7,] 0.3121691 0.3096513 0.3048905 0.3013504
#> [8,] 0.3121691 0.3096513 0.3048905 0.3013352
#> [9,] 0.3121691 0.3096513 0.3048600 0.3008164
#> [10,] 0.3121996 0.3095750 0.3045701 0.3070420
#>
#> , , 3
#>
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7]
#> [1,] 0.300679 0.2975357 0.2945907 0.2916915 0.2887007 0.2857862 0.2828412
#> [2,] 0.300679 0.2975357 0.2945907 0.2916915 0.2887007 0.2857862 0.2828412
#> [3,] 0.300679 0.2975357 0.2945907 0.2916915 0.2887007 0.2857862 0.2828412
#> [4,] 0.300679 0.2975357 0.2945907 0.2916915 0.2887007 0.2857862 0.2828412
#> [5,] 0.300679 0.2975357 0.2945907 0.2916915 0.2887007 0.2857862 0.2828412
#> [6,] 0.300679 0.2975357 0.2945907 0.2916915 0.2887007 0.2857862 0.2828412
#> [7,] 0.300679 0.2975357 0.2945907 0.2916915 0.2887007 0.2857862 0.2828412
#> [8,] 0.300679 0.2975357 0.2945907 0.2916915 0.2887007 0.2857862 0.2828412
#> [9,] 0.300679 0.2975357 0.2945907 0.2916915 0.2887007 0.2857862 0.2828412
#> [10,] 0.300679 0.2975357 0.2945907 0.2916915 0.2887007 0.2857862 0.2829328
#> [,8] [,9] [,10]
#> [1,] 0.2799268 0.2769360 0.2740215
#> [2,] 0.2799268 0.2769360 0.2740215
#> [3,] 0.2799268 0.2769360 0.2740215
#> [4,] 0.2799268 0.2769360 0.2740215
#> [5,] 0.2799268 0.2769360 0.2740215
#> [6,] 0.2799268 0.2769360 0.2740215
#> [7,] 0.2799268 0.2769360 0.2740215
#> [8,] 0.2799268 0.2769360 0.2740215
#> [9,] 0.2799268 0.2769207 0.2734569
#> [10,] 0.2796063 0.2775616 0.2841840
График изображения
plot(shot)

# render only a subset
imsub(shot, y <= 200, y >= 100, x <= 500, x >= 200) %>% plot()

Создано в 2019-03-25 по Представить пакет (v0.2.1)
Редактировать
Если вы хотите загрузить данные только без файла screenshot.png
, вы также можете сделать
capture_screen2 <- function(xmin = 0, xmax = Inf, ymin = 0, ymax = Inf) {
tmp <- tempfile(fileext = ".png")
system(glue("import -window root -resize 2560x1440 -delay 200 {tmp}"))
img <- load.image(tmp)
a <- try(unlink(tmp))
imsub(img, x >= xmin, x <= xmax, y >= ymin, y <= ymax)
}
shot <- capture_screen2()
Редактировать 2: Проблемы со скоростью
Я сделал бенчмаркинг скорости кода, самый быстрый вариант - использовать scrot
(sudo apt install scrot
в Ubuntu) в сочетании с пакетом png
:
system(glue::glue("scrot --silent screenshot.png"))
img <- png::readPNG("screenshot.png")
dim(img)