ruby - 在 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 $1 $4}'
0,0:red
1,0:red
0,1:red
1,1:red
推荐阅读
- ruby - 您如何在 Postgres 中解码 GraphQL::Schema::UniqueWithinType?
- tinkerpop3 - 只有在可以添加边的情况下,如何才能添加新顶点?
- visual-studio-code - VS Code 的设置 html.format.unformatted 有什么作用?
- java - Spring:HandlerMethodArgumentResolved 不使用自定义注释参数
- python - 为什么 openssl 无法验证 Python 密码库创建的签名?
- javascript - javascript if else 语句不起作用。即使我单击 twoStory 图像,它也会返回 singleStory。我试过了!=和---
- reactjs - 使用 Material-UI 和 ReactJS 处理图标 onClick 事件
- java - 为什么单例 getInstance 方法在 Java 中必须是公共静态的
- web-scraping - 我需要从 100 个 Microsoft Word 文档中抓取数据并在 CSV 文件中创建一个表格
- reactjs - 单击路线时底部导航消失