我有一本书的大量图像文件集合,出版商想要一个列表,其中文件按“类型”分类(灰度图、黑白半色调图像、彩色图像、线条图等)。这通常是一个难题,但也许我可以使用图像处理工具自动完成其中的一些,例如带有 R magick 包的 ImageMagick。
我认为 ImageMagick 是正确的工具,但我真的不知道如何将它用于此目的。
我所拥有的只是无花果编号和文件名的列表:
1.1 ch01-intro/fig/alcohol-risk.jpg
1.2 ch01-intro/fig/measels.png
1.3 ch01-intro/fig/numbers.png
1.4 ch01-intro/fig/Lascaux-bull-chamber.jpg
...
有人可以帮助我开始吗?
编辑:这可能是最初陈述的框架错误或过度拱形的问题。我认为 ImageMagickidentify
或 Rmagick::image_info()
函数可能会有所帮助,所以最初的问题可能应该是:“如何从 [R] 中的文件列表中提取图像信息”。我可以单独提出这个,如果没有被问到的话。
对此的初步尝试为我的第一张图片提供了以下信息,
library(magick)
# initialize an empty array to hold the results of `image_info`
figinfo <- data.frame(
format=character(),
width=numeric(),
height=numeric(),
colorspace=character(),
matte=logical(),
filesize=numeric(),
density=character(), stringsAsFactors = FALSE
)
for (i in seq_along(files)) {
img <- image_read(files[i])
info <- image_info(img)
figinfo[i,] <- info
}
我得到:
> figinfo
format width height colorspace matte filesize density
1 JPEG 661 733 sRGB FALSE 41884 72x72
2 PNG 838 591 sRGB TRUE 98276 38x38
3 PNG 990 721 sRGB TRUE 427253 38x38
4 JPEG 798 219 sRGB FALSE 99845 300x300
我的结论是,这对回答我提出的关于如何对这些图像进行分类的问题没有多大帮助。
Edit2在结束这个问题之前,直接使用 ImageMagick 的建议identify
很有帮助。https://imagemagick.org/script/escape.php
特别是,%[type]
更接近我的需要。这没有暴露在 中magick::image_info()
,所以我可能必须编写一个 shell 脚本或system()
循环调用。
作为记录,这里是我如何identify
直接使用提取这些图像文件的相关属性。
# Get image characteristics via ImageMagick identify
# from: https://imagemagick.org/script/escape.php
#
# -format elements:
# %m image file format
# %f filename
# %[type] image type
# %k number of unique colors
# %h image height in pixels
# %r image class and colorspace
identify -format "%m,%f,%[type],%r,%k,%hx%w" imagefile
>identify -format "%m,%f,%[type],%r,%k,%hx%w" Quipu.png
PNG,Quipu.png,GrayscaleAlpha,DirectClass Gray Matte,16,449x299
该%[type]
属性使我朝着我想要的方向前进。