我有一张1600x1600px的大图和一张50x50px的小图。运行测试大约需要3分20秒。小图像预计仅在50x500px的区域内出现在大图像中。
我试过了,但不起作用:compare -metric mse -subimage-search "big.png[50x500+0+118]" "small.png" null:
发布于 2017-02-09 21:49:09
让我们做big.gif吧
convert -size 1600x1600 xc:yellow -fill black -draw "rectangle 5,130 14,139" big.gif

和small.gif
convert -size 10x10 xc:black small.gif

现在让我们看看裁剪后的搜索区域:
convert big.gif -crop 50x500+0+118 x.gif

因此,您需要的命令是:
convert big.gif -crop 50x500+0+118 +repage miff:- | compare -metric mse -subimage-search miff:- small.gif null:
0 (0) @ 5,12这将搜索时间从91秒减少到0.7秒。
如果你的实际问题更难,或者更大,或者更紧迫,你可以将图像一分为二,并行地做两半-记住按照你寻找的子图的大小来重叠这两半:
convert big.gif -crop 50x260+0+118 +repage miff:- | compare -metric mse -subimage-search miff:- small.gif null: &
convert big.gif -crop 50x260+0+368 +repage miff:- | compare -metric mse -subimage-search miff:- small.gif null: &
wait现在需要0.4秒:-)
https://stackoverflow.com/questions/42134307
复制相似问题