- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于图像中的每一行,我想找到该行中的第一个黑色(或第一个非白色)像素。例如,对于这样的图像:
我希望输出如下:
0
1
0
或者接近我可以解析的东西。我认为可能有一种方法可以通过子图像搜索来做到这一点,但我不太清楚该怎么做。有什么指点吗?
最佳答案
您不需要subimage-search 来实现您的目标。该问题可以简化为文本解析。
考虑一下:您可以告诉 ImageMagick 将任何图像转换为文本表示形式,其中包含每个像素的准确颜色信息。 示例:
convert wizard: textwizard.txt
(向导:
是用于所有 ImageMagick 安装的内置图像,用于测试目的。)
是的,就是这么简单!只需添加一个 .txt
后缀即可请求此图像“格式”。 结果:
# ImageMagick pixel enumeration: 480,640,255,srgb
0,0: (255,255,255) #FFFFFF white
1,0: (255,255,255) #FFFFFF white
2,0: (255,255,255) #FFFFFF white
[....]
47,638: (246,247,249) #F6F7F9 srgb(246,247,249)
48,638: (246,247,249) #F6F7F9 srgb(246,247,249)
47,639: (236,235,236) #ECEBEC srgb(236,235,236)
48,639: (230,228,218) #E6E4DA srgb(230,228,218)
[....]
476,639: (255,255,255) #FFFFFF white
477,639: (255,255,255) #FFFFFF white
478,639: (255,255,255) #FFFFFF white
479,639: (255,255,255) #FFFFFF white
如果您查看输出的第一行,您会注意到 ImageMagick 在此处使用它来详细说明有关图像的一些特殊信息:
# ImageMagick pixel enumeration: 480,640,255,srgb
意思是:
其他行由 4 列组成:
(N,M)
中的第一列以(row_number,column_number)
表示各个像素的确切位置。 (行号和列号的索引从零开始——第 1 行表示为 0
,第 2 行表示为 1
。)As a side note: you can use such a textual representation of the original image (with or without some extra modifications) to re-create a real image:
convert textwizard.txt wizard.jpg
您应该知道,您可以使用以下语法选择图像的特定区域:
image.png[WIDTHxHEIGHT+X_OFFSET+Y_OFFSET]
因此,要仅选择特定行,您可以将 HEIGHT
设置为 1
。要完全获取任何行,请将 X-OFFSET
设置为 0
。要获取特定行,请相应地设置 Y-OFFSET
。
为了获取索引为 47 的行的值(对于上面使用的内置 向导:
图像),我们可以这样做:
convert wizard:[640x1+0+47] row47.txt
cat row47.txt
# ImageMagick pixel enumeration: 480,1,255,srgb
0,0: (255,255,255) #FFFFFF white
1,0: (255,255,255) #FFFFFF white
2,0: (255,255,255) #FFFFFF white
[....]
428,0: (82,77,74) #524D4A srgb(82,77,74)
429,0: (169,167,168) #A9A7A8 srgb(169,167,168)
430,0: (232,231,228) #E8E7E4 srgb(232,231,228)
432,0: (246,247,249) #F6F7F9 srgb(246,247,249)
[....]
476,0: (255,255,255) #FFFFFF white
477,0: (255,255,255) #FFFFFF white
478,0: (255,255,255) #FFFFFF white
479,0: (255,255,255) #FFFFFF white
如果您不想在文件中输出文本,而是在标准输出 channel 上打印,您可以这样做:
convert wizard:[480x1+0+47] txt:-
根据以上信息片段,可以明确执行此任务的方法:
这是可以使用的 Bash 脚本的主要部分:
# Define some image specific variables (width, height, ...)
image=${1}
number_of_columns=$(identify -format '%W' ${image})
width=${number_of_columns} # just an alias
number_of_rows=$(identify -format '%H' ${image})
height=${number_of_rows} # just an alias
max_of_indices=$(( ${height} -1 ))
# Loop through all rows and grep for first non-white pixel
for i in $(seq 0 ${max_of_indices}); do
echo -n "Row ${i} : " ;
convert ${image}[${width}x1+0+${i}] txt:- \
| grep -v enumeration \
| grep -v '#FFFFFF' -m 1 \
|| echo "All WHITE pixels in row!"
done
-v white
将取消选择所有包含字符串 white
的行。-m 1
参数将返回最多 1 个匹配项(即第一个匹配项)。
它会很慢,但它会起作用。
关于imagemagick - 使用 ImageMagick 在每一行中找到第一个黑色像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28869455/
使用 ImageMagick 我想绘制一个相对于图像宽度的图元 这对我不起作用 mogrify -stroke white -fill white -draw "rectangle 100,100 %
对于一个项目,我试图创建图像的透视失真以匹配 DVD 盒正面模板。所以我想使用 ImageMagick (CLI) 自动执行此操作,但我很难理解此转换的数学方面。 convert \ -verbo
我遵循的是这个示例http://cubiq.org/create-fixed-size-thumbnails-with-imagemagick,这正是我要对图像执行的操作,除了背景残留物(即白色边框)
我将.psd转换为一个文件夹内的.png文件。如何在具有不同扩展名的文件夹中保持每个文件的名称相同? 例如,我输入文件夹图像,然后从终端执行 $ convert *.psd *.png 但是它给.pn
我正在使用以下 ImageMagick 脚本(带有用于 PHP 的 Imagick)来生成字体图像。这个脚本用大约 0.1 秒来生成一个大约 30 个字符的 48 大小的图像。目标速度大约是 0.01
我正在使用以下 ImageMagick 脚本(带有用于 PHP 的 Imagick)来生成字体图像。这个脚本用大约 0.1 秒来生成一个大约 30 个字符的 48 大小的图像。目标速度大约是 0.01
我遇到了一个 paper它使用由 ImageMagick convert 命令生成的合成手写数据,使用许多不同的手写字体 ( Example images from paper )。 他们已经用他们的
我有一张图片。我需要从图像中裁剪矩形区域。该矩形区域由黑色边框标识。矩形里面是我需要的。是否可以在 imagemagick 中裁剪黑色边框矩形区域?我知道可以通过提供矩形区域的偏移量(-crop Wx
我有一堆图片是桌面墙纸,但尺寸不同。对于我的示例,我将使用分辨率 1920x1080。如何缩放图像以便: 对于宽度和高度小于我的屏幕的图像,图像居中然后按比例放大,直到两者中较小的达到 1920 或
我必须处理大量图像,并且正在寻找检测边框颜色的方法。例如,拍摄这张图片: 是否可以通过某种方式确定图像具有白色背景?解决方法是提取 1px 的边框并检查提取的边框的颜色是否同样为白色。但我认为 Ima
我正在使用 PowerShell 脚本将 Unicode 字符批量转换为 PNG 文件。参见 http://pastebin.com/aGJzk4Hh . 我发现要转换 " 字符,必须使用指定标签:\
目前我正在尝试转换为 HEIF,但唯一与 HEIF 相关的选项是 heic:preserve-orientation(在 CLI 选项 define 中)。我如何为 HEIF 和其他格式使用其他特定于
正如您在答案 “Diff” an image using ImageMagick 中看到的那样,“delta”图像以某种方式变亮了: 如何使用 ImageMagick 使图像变亮? 最佳答案 我假设您
我正在使用 ImageMagick 的 convert 来调整一些 .png 文件的大小,问题是 convert 似乎正在向 .png 写入一些额外的信息: EXtdate:create 2012-1
此 blog post 图像中使用的边框阴影效果似乎嵌入在图像本身(不是 css3)中。如何在 imagemagick 中创建它? 编辑 1: 我偶然发现的解决方案作为答案发布在下面。 最佳答案 有一
我有大约 200 张扫描照片,我想从中裁剪掉空白区域。参见示例: 有人可以为我提供适当的命令行代码来执行此操作吗?...我一直在尝试整理 -trim 和 -fuzz 选项,但没有成功。并非所有图像的大
我正在创建一个重命名照片的 bash 脚本,以便它们在文件名中包含日期和时间。我想用 ImageMagick 的 identify 实用程序建立一个文件名。 identify -format "IMG
我有一张长图source pic我想为每个子图像添加文本,但是当向书中添加文本时,我失败了,最终图像和代码: convert src.jpg -gravity north -pointsize 53
我想使用 CLI 向图像添加一个黑色矩形,该图像 1) 居中并且 2) 从每个边缘开始 X 像素。 基本上,我几乎想要 -border 的对立面(而不是添加某种颜色的边框,我想保留图像的 X 像素作为
所以我想创建一张由三张小图片组成的 3600x2280 大图片。第一个应调整为 1680x1050 并放置在左上角。第二个需要调整为 1920x1200 并立即放置在它的右侧(+1680 以上)。第三
我是一名优秀的程序员,十分优秀!