Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ImageMagick比较移动的像素和相似的图像_Imagemagick_Imagemagick Convert - Fatal编程技术网

使用ImageMagick比较移动的像素和相似的图像

使用ImageMagick比较移动的像素和相似的图像,imagemagick,imagemagick-convert,Imagemagick,Imagemagick Convert,比较两个图像时,两个图像都相同,只是其中一个图像中的文本移动了几个像素。请看下面的网址。它是一个GIF,显示了两幅相似图像的差异 我的团队最初使用了compare命令,但它没有解决这个问题。需要建议吗?您可以删除Imagemagick中的所有文本,只需对饱和度/色度通道设置阈值,然后进行比较即可。文本是灰色的,因此它几乎没有饱和度。这些条是青色的,所以它们是彩色的,并且具有中高饱和度 convert giphy.gif -colorspace HCL -channel g -separate

比较两个图像时,两个图像都相同,只是其中一个图像中的文本移动了几个像素。请看下面的网址。它是一个GIF,显示了两幅相似图像的差异


我的团队最初使用了compare命令,但它没有解决这个问题。需要建议吗?

您可以删除Imagemagick中的所有文本,只需对饱和度/色度通道设置阈值,然后进行比较即可。文本是灰色的,因此它几乎没有饱和度。这些条是青色的,所以它们是彩色的,并且具有中高饱和度

convert giphy.gif -colorspace HCL -channel g -separate +channel -threshold 5% +write tmp.gif miff:- | compare -metric rmse - null: 
3164.96 (0.0482942)
这是4.8%的不同

我保存tmp.gif,您不需要它,只是为了在比较之前显示处理结果


如果您的Imagemagick版本太旧,并且没有-colorspace HCL,请尝试HSL或HSB。C和S是相似的,测量饱和度/色度。

数字不会移动几个像素-它们的大小不同。没错,但我觉得随着大小的不同,它们甚至会移动几个像素,因为图形上方的图标会不断上下移动。你需要做什么?你还没有解释你想要什么。您是希望校正帧还是只希望测量图像差异?你试过什么?Imagemagick的哪个版本和哪个平台?我从
identify giphy.gif
中注意到第一帧比第二帧高1像素。你可以试着在顶部或底部切掉1个像素,看看这是否有帮助。我想比较这些图像,并在返回结果时忽略这些像素差异和大小差异。我使用的是'compare'命令,它在比较中非常严格,所以它返回的结果是,两者不一样。忽略是什么意思?如果这些问题以某种方式被忽略,那么比较的结果会说它们完全相同。你的要求没有道理。请进一步澄清。这两个框架是如何创建的,以至于它们看起来不同?我认为OP正在抓取她正在开发的某个应用程序的屏幕,并尝试使用ImageMagick作为自动测试过程的一部分,以检查应用程序是否始终生成正确的屏幕。我想内容必须是正确的,但是演示文稿应该允许稍有变化。有一个相关但已删除的问题,我认为在20000分之前您无法看到。在我的selenium测试中,我仅在创建图表时使用ImageMagick,并且我必须将此图表与保存在本地计算机上的参考图表图像进行比较。”我想内容一定是正确的,但是演示应该允许略有不同。你可以用两个不同的图像,而不是gif动画的两帧,做我上面做的同样的事情。您遇到的问题源于一个图像是通过不同的处理创建的。所以你不太可能让他们在位置上完美匹配。我的技术至少消除了字体和文本位置上的文本差异。删除文本后,如果两个大小相同的图像只有轻微的定位,则可以使用其他方法对其进行比较。或者用黑色填充一个处理过的图像,并使用compare-with-subimage搜索。