在 ImageMagick / RMagick 中检测非透明像素的最有效方法
Most efficient way to detect non-transparent pixels in ImageMagick / RMagick
我有一系列通过 HTML Canvas 创建的绘图。我需要使用这些绘图创建热图以显示最常见的区域。
每张图都是透明背景的PNG图片。唯一不透明的像素是用户绘制的像素。以下是一些示例图片:https://imgur.com/a/saTK9d7
我正在寻找最有效的方法来获取每个图像的非透明像素,然后将其添加到矩阵以生成热图。
我可以通过遍历每个像素并检查它的 alpha 值来获得它。然而,这些图像每张大约为 1400 x 750 像素,因此每张图像大约有 1,000,000 张支票。当我们有数百张图像需要动态分析时,这就变得站不住脚了。
有什么方法可以更有效地做到这一点?我对所有想法持开放态度。
在命令行 ImageMagick 中,您可以使用 sparse-color: 或解析 txt: 列出所有非透明像素。这是一张 100x100 的透明图像,左上角有一个 2x2 的红色方块。
convert img.png sparse-color:
0,0,srgba(255,0,0,1) 1,0,srgba(255,0,0,1) 0,1,srgba(255,0,0,1) 1,1,srgba(255,0,0,1)
或
convert x.png txt: | tail -n +2 | grep -v "none" | awk '{print }'
0,0:red
1,0:red
0,1:red
1,1:red
我有一系列通过 HTML Canvas 创建的绘图。我需要使用这些绘图创建热图以显示最常见的区域。
每张图都是透明背景的PNG图片。唯一不透明的像素是用户绘制的像素。以下是一些示例图片:https://imgur.com/a/saTK9d7
我正在寻找最有效的方法来获取每个图像的非透明像素,然后将其添加到矩阵以生成热图。
我可以通过遍历每个像素并检查它的 alpha 值来获得它。然而,这些图像每张大约为 1400 x 750 像素,因此每张图像大约有 1,000,000 张支票。当我们有数百张图像需要动态分析时,这就变得站不住脚了。
有什么方法可以更有效地做到这一点?我对所有想法持开放态度。
在命令行 ImageMagick 中,您可以使用 sparse-color: 或解析 txt: 列出所有非透明像素。这是一张 100x100 的透明图像,左上角有一个 2x2 的红色方块。
convert img.png sparse-color:
0,0,srgba(255,0,0,1) 1,0,srgba(255,0,0,1) 0,1,srgba(255,0,0,1) 1,1,srgba(255,0,0,1)
或
convert x.png txt: | tail -n +2 | grep -v "none" | awk '{print }'
0,0:red
1,0:red
0,1:red
1,1:red