首页 > 解决方案 > 返回具有给定 RGB/HEX 值的像素坐标

问题描述

假设我有一张像下面这张笑脸的图像:

举个例子,一个白色的背景,上面画着一个蓝色的微笑

我想编写一个 R 脚本,返回蓝色像素的像素坐标。理想情况下,我想在使用此包/功能时指定蓝色的 RGB/HEX/etc 值,而不是使用阈值或逻辑计算来查看像素是否为“白色”或“非白色” '。我知道 Python 和 MATLAB 中有工具和包,但我想知道 RI 中是否有合适的包可以代替。谢谢!

标签: rimage-processing

解决方案


您可以使用该包将 PNG 作为 3d 数组 (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

推荐阅读