从jpeg中提取十六进制颜色,存储在data.frame中,然后使用ggplot进行绘图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从jpeg中提取十六进制颜色,存储在data.frame中,然后使用ggplot进行绘图相关的知识,希望对你有一定的参考价值。

就像标题所说的那样。我有一个图像,我想提取颜色的十六进制值,存储在data.frame中,然后使用ggplot绘图。

这就是我所拥有的:

library(ggplot2)
aws.logo = 'https://eventil.s3.amazonaws.com/uploads/group/avatar/8626/medium_highres_470196509.jpeg'

temp = tempfile()
download.file(aws.logo, temp, mode = 'wb')

## matrix of colors
y = jpeg::readJPEG(temp)
val <- rgb( y[,,1], y[,,2], y[,,3], maxColorValue = 255)
aws.img <- matrix(val, dim(y)[1], dim(y)[2])

out = reshape2::melt(aws.img)
names(out) = c('col', 'row', 'value')
out$value = as.character(out$value)

ggplot(out) + 
  geom_point(aes(x = row, y = -col), color = out$value) + ## why do I have to flip the order of 
  theme(legend.position="none")                           ## col after reshaping?

为什么颜色与网站上的徽标不同?

答案

raedJPEG将返回0/1比例的RGB颜色值,而不是0/255比例。使用

val <- rgb( y[,,1], y[,,2], y[,,3], maxColorValue = 1)

此外,通常最好不要在ggplot调用中进行任何$操作。这样的事情会更安全

ggplot(out) + 
  geom_point(aes(x = row, y = -col, color = value)) +       
  theme(legend.position="none") + 
  scale_color_identity ()

enter image description here

以上是关于从jpeg中提取十六进制颜色,存储在data.frame中,然后使用ggplot进行绘图的主要内容,如果未能解决你的问题,请参考以下文章

从数据转储中提取 JPEG/PNG/GIF 图像

python 从文件中提取所有十六进制颜色。

提取并以十进制返回 RGBA 颜色的各个分量

如何在颤动中将十六进制颜色代码解析为它们各自的整数值

如何从android中的jpeg图像中提取文本[关闭]

从python中的jpeg2000图像中提取元数据