![获取子图像所有实例的坐标](https://linux22.com/image/130240/%E8%8E%B7%E5%8F%96%E5%AD%90%E5%9B%BE%E5%83%8F%E6%89%80%E6%9C%89%E5%AE%9E%E4%BE%8B%E7%9A%84%E5%9D%90%E6%A0%87.png)
这个命令:
compare -metric mse -subimage-search image.jpg subimage.jpg null:
为我提供子图像出现的给定度量和坐标的值。
如果我想要给定子图像的所有出现的坐标怎么办?
文档提到了-similarity-threshold
参数,但它在 imagick 6.7 中不存在
答案1
这是一个想法的开始:
compare -metric mse -subimage-search concat.png subimage.jpg resultimage.png
convert resultimage-1.png resultMap.txt
python extractPoints.py resultMap.txt
extractPoints.py 看起来像
#!/bin/python
import os,re,argparse
parser = argparse.ArgumentParser(description='extract top match pixels from an Imagemagick text file.')
parser.add_argument('infile', type=str, help='infile name')
args = parser.parse_args()
d = {}
with open(args.infile, 'r') as f:
for line in f:
parsed_line = re.match('([0-9]+,[0-9]+): \([0-9]+,[0-9]+\)\s.*graya\(([0-9]+),[0-9]\)', line)
if not parsed_line:
continue
if parsed_line.group(2) in d:
d[parsed_line.group(2)].append(parsed_line.group(1))
else:
d[parsed_line.group(2)]=[parsed_line.group(1)]
max_pixel_val = (max(d, key=int))
print(d[str(max_pixel_val)])
您可能没有使用graya强度,在这种情况下,您可以修改正则表达式或解析列出此信息的初始行。