Вернуть координаты пикселей с заданным значением RGB / HEX - PullRequest
0 голосов
/ 10 февраля 2020

Допустим, у меня есть изображение, похожее на смайлик ниже:

Just as an example, a white background with a blue smile drawn on it

Я хотел бы написать скрипт R, который возвращает координаты пикселей синих пикселей. В идеале я хотел бы указать значение RGB / HEX / et c синего цвета при использовании этого пакета / функции, а не с использованием порога или вычисления logi c, где я смотрю, является ли пиксель или нет «белый или не белый». Я знаю, что в Python и MATLAB есть инструменты и пакеты, но мне было интересно, есть ли в RI подходящий пакет, который можно было бы использовать вместо этого. Спасибо!

1 Ответ

1 голос
/ 10 февраля 2020

Вы можете загрузить PNG в виде трехмерного массива (n_rows x n_columns x (R, G, B, alpha)), используя пакет png. Тогда вы можете сделать что-то вроде этого:

find_pixels <- function(png_path, string)
{
  img <- 255 * png::readPNG(png_path)
  R <- as.numeric(paste0("0x", substr(string, 2, 3)))
  G <- as.numeric(paste0("0x", substr(string, 4, 5)))
  B <- as.numeric(paste0("0x", substr(string, 6, 7)))
  which(img[,,1] == R & img[,,2] == B & img[,,3] == G, arr.ind = TRUE)
}

find_pixels("~/smiley.png", "#FAFAFA")
#>      row col
#> [1,]   1   1
#> [2,]   2   1
#> [3,]   3   1
#> [4,]   4   1
#> [5,]   5   1
#> [6,]   6   1
#> ... etc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...