【发布时间】:2020-05-17 01:20:18
【问题描述】:
我有两张不同的图片:
和
如您所见,从人类的角度来看,两者显然是“相同的”。现在我想以编程方式检测它们是否相同。我一直在通过名为 rmagick 的 ruby gem 使用图像魔法,如下所示:
img1 = Magick::Image.from_blob(File.read("image_1.jpeg")).first
img2 = Magick::Image.from_blob(File.read("image_2.jpeg")).first
if img1.difference(img2).first < 4000.0 # I have found this to be a good threshold, but does not work for cropped images
puts "they are the same!!!"
end
虽然这适用于具有相同比例/裁剪的图像,但当它们的裁剪略有不同并且已调整为相同宽度时,它并不理想。
有没有办法对不同裁剪的图像进行处理?我对一个解决方案感兴趣,我可以这样说:一个图像包含在另一个图像中,并覆盖了周围的某个地方,例如90%。
PS。如果有帮助,我可以获得更高分辨率的图像(例如双精度)
【问题讨论】:
-
不确定 RMagick,但 ImageMagick 的
compare命令行工具有一个-subimage-search开关。 -
这很有趣,这样的命令看起来如何?
-
我自己没用过,也许这有帮助:stackoverflow.com/q/29062811/477037
-
谢谢,这是一个很棒的信息。但是我不知道如何从 ruby 中做到这一点......
-
图片质量那么差吗?如果没有,请分享更大版本的图像,质量更高。
标签: ruby image-processing computer-vision imagemagick rmagick