Php png Lineart比较
几天来,我一直在做一项涉及使用PHP进行图像比较的任务。我开始认为PHP不是完成这类任务的语言 目标: 使用一个基准,将一个新的线条艺术与之进行比较,并返回它们之间的百分比差异。 我尝试了两种方法:比较像素数的差异(这并不能真正解决线条艺术差异的目标),使所有重叠的像素变为白色,然后找到没有透明度的像素/白色,然后除以底部的不透明像素(似乎没有得到正确的数字) 这里有一个例子: --基础线艺术-- 百分比差异应该在54%左右。然而,我尝试过的所有方法都没有接近这一点(~5%) 我的问题是:这可以/如何在PHP中实现? 谢谢Php png Lineart比较,php,gd,Php,Gd,几天来,我一直在做一项涉及使用PHP进行图像比较的任务。我开始认为PHP不是完成这类任务的语言 目标: 使用一个基准,将一个新的线条艺术与之进行比较,并返回它们之间的百分比差异。 我尝试了两种方法:比较像素数的差异(这并不能真正解决线条艺术差异的目标),使所有重叠的像素变为白色,然后找到没有透明度的像素/白色,然后除以底部的不透明像素(似乎没有得到正确的数字) 这里有一个例子: --基础线艺术-- 百分比差异应该在54%左右。然而,我尝试过的所有方法都没有接近这一点(~5%) 我的问题是:这可
Images©Aywas.com您可以尝试使用ImageMagick功能,只使用黑色通道吗 编辑:这里是一个基本尝试及其输出。您可能能够操纵输出数字来计算阈值。图1和图2是线条艺术,图3是调整大小为200x200的Google标题徽标
$img1 = new Imagick('image1.png');
$img2 = new Imagick('image2.png');
$img3 = new Imagick('image3.png');
$diff12 = $img1->compareImageChannels($img2,
Imagick::CHANNEL_ALL, Imagick::METRIC_MEANABSOLUTEERROR);
$diff13 = $img1->compareImageChannels($img3,
Imagick::CHANNEL_ALL, Imagick::METRIC_MEANABSOLUTEERROR);
print_r($diff12);
print_r($diff13);
输出:
Array
(
[0] => Imagick Object
(
)
[1] => 1512.25385625
)
Array
(
[0] => Imagick Object
(
)
[1] => 24353.6380375
)
用PHP开箱即用绝对不行。@brady:PHP支持和。。。“所以这是可能的。”贾斯汀,我不认为他在试图达到错误的边缘。我在许多项目中使用过GD,但我无法理解它的准确性。我想看到有人对如何做到这一点感到惊讶。我不得不说,我对PHP+图形设计相当悲观