php + gd 的图像比较

2023-11-27

使用 php 比较两个图像的最佳方法是什么图形绘制 (GD) 库?

这是场景:

alt text

我有一张图像,我想找到给定集合中哪张图像与其最相似。 最相似的图像实际上是同一张图像,不是像素完美匹配,而是同一张图像。 我在示例中戏剧化了两个图像与第一张图像之间的差异,只是为了便于理解我的意思。

尽管它没有带来一致的结果,但我的方法是使用图像复制重采样函数并查看图像之间的 RGB 值有多接近。

从可能匹配的红色、绿色和蓝色十进制等效值中减去每个红色、绿色和蓝色十进制等效值的值的总和给了我一个相异指数,尽管它没有按预期工作,因为不总是RGB 最相似的图像是目标图像,我可以用来从可用目标中选择图像。

以下是将 4 个图像与目标图像(在本例中为苹果徽标)进行比较时的输出示例,与其中一个图像匹配,但并不完全相同:

原图:

红色:222 绿色:226 蓝色:232

比较:

http://a1.twimg.com/profile_images/571171388/logo-twitter_normal.png Red:183 Green:212 Blue:212 and an index of similarity of 56

红色:117 绿色:028 蓝色:028 相异指数 530

红色:218 绿色:221 蓝色:221 以及差异指数13 匹配正确。

Red:061 Green:063 Blue:063 and an index of dissimilarity 491

甚至可能无法比我已经得到的结果更好,我在这里浪费时间,但由于似乎有很多经验丰富的 php 程序员,我想你可以为我指出如何改进的正确方向这。

我对其他图像库持开放态度,例如iMagick, Gmagick or Cairo对于 php,但我宁愿避免使用除 php 之外的其他语言。

提前致谢。


我认为你的方法似乎是合理的,但将整个图像减小到 1x1 像素大小可能有点太过了。

但是,如果您将每个图像转换为相同的大小,然后计算每个 16x16(或 32x32、64x64 等,具体取决于您希望使用多少处理时间/功率)单元格中的平均颜色,您应该能够形成某种类型明智的(-ish)比较。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

php + gd 的图像比较 的相关文章

  • 当数据验证失败时保留表单字段中的值

    我在弄清楚验证失败时如何保留用户数据时遇到问题 我对 PHP 有点陌生 所以我的逻辑可能会犯一些巨大的错误 目前 如果验证失败 所有字段都会被清除 并且 Post 数据也会消失 这是一些代码 假设用户输入无效电子邮件 我希望保留 名称 字段
  • Yii 使用 ajax 进行分页

    我需要使用ajax启用分页 我的代码 控制器 更新内容ajax function actionIndex dataProvider new CActiveDataProvider News array pagination gt array
  • 将一幅图像合成到另一幅图像上时,RMagick 透明度不起作用

    在下面的代码中 我尝试在一些山脉的图像上覆盖一个透明的正方形 我认为它会起作用 但是通过设置background color none 它不会使图像透明 结果是左上角有一个黑色方块 所需的结果是黑色方块应该是透明的 require open
  • 如何从父类函数访问子类中定义的常量?

    我从 php net 看到这个例子 但 c MY CONST 仅在 5 3
  • 从 numpy 数组中删除连续的 RGB 值

    我最初根据灰度图像的初始数组创建了一个子数组 从 numpy 数组中删除连续数字 https stackoverflow com questions 50743769 deleting consecutive numbers from a
  • 为什么我需要结束 ob_start()?

    php 文档建议我应该用 ob end flush 结束每个 ob start 我在网站的每个页面上使用一个 只是为了允许我在应用程序中的任何位置使用 firephp 日志方法 该应用程序运行良好 但我想知道是否有任何我不知道的东西可能有害
  • 使用 preg_replace 仅替换第一个匹配项

    我有一个结构类似于以下的字符串 aba aaa cba sbd dga gad aaa cbz 该字符串每次都可能有点不同 因为它来自外部源 我只想替换第一次出现的 aaa 但其他人则不然 是否可以 可选的第四个参数预替换 http php
  • 如何在原则 2 迁移中删除外键

    我想在原则 2 迁移中删除外键 但没有 dropForeignKeyConstraint 有谁知道怎么丢掉吗 public function down Schema schema table schema gt getTable table
  • 学说迁移后备

    我们正在使用原则迁移 当迁移包含多个操作并且其中一个操作失败时 通常会出现问题 例如 如果迁移添加了 5 个外键 其中第 5 个失败 而字段长度不同 则修复字段错误并重新生成迁移不会not修复整个问题 而现在出现一个与 4 个密钥已存在有关
  • 使用 SSL 证书验证 Web 浏览器

    是否可以使用 ssl 证书对 Web 浏览器进行身份验证 假设我在应用程序中存储私钥 有什么方法可以从浏览器读取密钥并尝试基于该私钥进行身份验证 您可以使用 SSL TLS 客户端证书身份验证来对浏览器 用户进行身份验证 服务器必须请求客户
  • 在 Wordpress 站点中进行 AJAX 调用时出现问题

    我在使用 Wordpress 站点功能的 AJAX 部分时遇到了一些问题 该功能接受在表单上输入的邮政编码 使用 PHP 函数来查找邮政编码是否引用特定位置并返回到该位置的永久链接 我的第一个问题是关于我构建的表单 现在我的表单操作是空白的
  • 覆盖控制器 Symfony 3.4/4.0

    我目前正在尝试覆盖 FOSUserBundle 中的控制器 在新的文档中 https symfony com doc 3 4 bundles override html https symfony com doc 3 4 bundles o
  • jQuery Mobile 表单验证

    我有一个移动网站 除了验证之外一切都工作正常 基本上我希望从用户那里获取值 然后在单独的页面 process php 上处理它们 但是 在这样做之前 我需要检查以确保字段已填充 我已经研究了几种方法来做到这一点 但似乎没有一种有效 我现在有
  • 在 apache docker 容器中运行虚拟主机

    我在同一个 apache 容器中有两个 php 应用程序 我试图在端口上运行其中一个应用程序 因为它需要通过根域而不是子文件夹进行访问 我想在端口 8060 上运行应用程序 我尝试使用 apache 虚拟主机执行此操作 但它不会加载页面 h
  • Doctrine EntityManager 清除嵌套实体中的方法

    我想用学说批量插入处理 http doctrine orm readthedocs org en latest reference batch processing html为了优化大量实体的插入 问题出在 Clear 方法上 它表示此方法
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • php,统计字符并删除超过140个字符的内容

    我需要一个 PHP 函数来计算短语的字符数 如果短语长度超过 140 个字符 则此函数应删除所有其他字符并在短语末尾添加三个点 例如我们有 message I am what I am and you are what you are et
  • 内部 while 循环不工作

    这是我项目网页上的代码片段 这里我想显示用户选择的类别 然后想显示属于该类别的主题 在那里 用户可以拥有多个类别 这没有问题 我可以在第一个 while 循环中打印所有这些类别 问题是当我尝试打印主题时 结果只显示一行 但每个类别中有更多主
  • 使用正则表达式提取两个短语之间的所有单词[重复]

    这个问题在这里已经有答案了 我正在尝试使用以下正则表达式提取两个短语之间的所有单词 b item W w W 0 2 1 one W w W 0 3 business b b item W w W 0 2 3 three W w W 0 3
  • 无法显示 Laravel 欢迎页面

    我的服务器位于 DigitalOcean 云上 我正在使用 Ubuntu 和 Apache Web 服务器 我的家用计算机运行的是 Windows 7 我使用 putty 作为终端 遵循所有指示https laracasts com ser

随机推荐

  • 如何在WPF MVVM中调用窗口的Loaded事件?

    从我的 OnLoaded 事件创建命令很容易 处理程序代码 但如何从视图中调用它 从此不再切蛋糕 它调用 xaml cs 中的代码 我将如何创建一个 ICommand 相等的 您可以通过附加行为来完成此类事情 为了节省一些时间 看看 Mar
  • Promise.all() 被拒绝后的值,显示 [''PromiseStatus'']:如果存在 catch 块,则已解决

    我有两个承诺 一个被拒绝 另一个被解决 Promise all 被调用 当其中一个承诺被拒绝时 它执行了 Promise all 的 catch 块 const promise1 Promise resolve Promise 1 Reso
  • GTK 或 Qt 的图表小部件 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 GTK 或 Qt 是否有一
  • NuGet 包依赖项

    对于一个包对其他库的每个依赖项 这些库是否也需要解析和安装 例如 我创建了一个使用的包NLog Postsharp and WindowsAzure Storage 我的软件包的客户端现在也必须安装这些软件包吗 为什么不能将这些依赖项 DL
  • 没有可见的接口错误

    我的模型的实现文件中有一个错误 我已将其注释掉 我可以做什么来解决这个问题 提前致谢 import CalculatorBrain h interface CalculatorBrain property nonatomic strong
  • 为什么在 `array.length && ...` 的短路计算中呈现“0”

    目前 我看到这样的行为 render const list return div list length div List rendered div div 我的预期是在该条件下不会呈现任何内容 但会呈现字符串 0 字符串 0 是list
  • spring-mvc中如何传递参数来重定向页面

    我写了以下控制器 RequestMapping value logOut method RequestMethod GET public String logOut Model model RedirectAttributes redire
  • 检查在自定义 Chrome 选项卡中打开哪个网址

    chrome自定义选项卡中是否有类似于Webview的onPageStarted的功能 在 onNavigation 捆绑包始终为空 根据设计 Chrome 自定义选项卡不可能做到这一点 您可以知道用户已经导航 但无法知道他们去了哪里 看
  • 检测浏览器关闭/导航到其他页面并注销的最佳方法

    我正在 GWT 中编写一个应用程序 我需要检测用户何时离开我的应用程序或何时关闭浏览器窗口 onUnload 事件 并执行注销 会话失效和其他一些清理任务 注销操作由 servlet 执行 我目前正在通过挂钩 onUnload 事件并打开一
  • 检查 LatLngBounds.Builder 是否为空

    这是我的代码 LatLngBounds Builder builder new LatLngBounds Builder for int x firstVisibleItem x lt lastVisibleItem x builder i
  • 如何提取直接 Facebook 视频 url

    我正在尝试从 facebook 视频链接中提取 facebook 视频文件页面的 url 但我无法继续操作 例如 我的 Facebook 视频网址是 https www facebook com nerdandco videos 16621
  • 如何在 Woocommerce 中检查产品是否具有特定产品属性

    我想确定产品是否具有属性 例如 if product has attribute pa color do something 我怎样才能做到这一点 您只需使用WC Product method get attribute 这边走 If ne
  • 在 keras 中加载模型后的不同预测

    我在 Keras 中构建了一个序列模型 经过训练后它给了我很好的预测 但是当我保存然后加载模型时 我没有在同一数据集上获得相同的预测 为什么 请注意 我检查了模型的权重 它们以及模型的架构都是相同的 并使用 model summary 和
  • 使用 Java 邮件服务器进行测试

    我正在测试一个应用程序 该应用程序从邮箱中取出邮件 根据该邮件的内容执行某些操作 然后根据操作的结果发送响应邮件 我正在寻找一种为此应用程序编写测试的方法 理想情况下 我希望这些测试能够启动自己的邮件服务器 将我的测试电子邮件推送到该邮件服
  • 如何等待 Angular Google 地图将 getGMap 附加到控制对象

    我一直在尝试在google maps Map由创建的对象ui gmap google map指令来自Angular 谷歌地图库 我需要动态地执行此操作 因此 至少通过我的简短测试 似乎使用events上的参数ui gmap google m
  • ccAvenue 支付网关中 ios 9 中的安全错误

    在发布 iOS 9 之前 我将 ccAvenue paymeny 网关集成到我的 iOS 应用程序中 付款已成功转移到 iOS 8 中的商家帐户 当我在 iOS 9 中测试我的应用程序时 付款已转移到商家帐户 但显示安全错误 我也改变lib
  • 函数的返回类型是重整名称的一部分吗?

    假设我有两个具有相同参数类型和名称的函数 不在同一个程序中 std string foo int x return hello int foo int x return x 编译后它们会具有相同的损坏名称吗 返回类型是 C 中重整名称的一部
  • 如何从OpenStreetMap中找到路口?

    如何在OpenStreetMap中提取路口 我需要路口的经度和纬度 谢谢 曾经有过类似的问题here 没有直接的 API 调用来检索交集 但是您可以查询给定边界框中的所有方式 例如直接通过API或通过立交桥API 并查找由两种或多种方式共享
  • 仅从 ELF 二进制文件中提取我的函数名称

    我正在编写一个脚本 用于提取二进制文件中的所有函数 由用户编写 以下 shell 脚本提取我的函数名称以及一些以以下开头的库函数 readelf s a out gawk if 4 FUNC 3 0 7 13 8 main print b
  • php + gd 的图像比较

    使用 php 比较两个图像的最佳方法是什么图形绘制 GD 库 这是场景 我有一张图像 我想找到给定集合中哪张图像与其最相似 最相似的图像实际上是同一张图像 不是像素完美匹配 而是同一张图像 我在示例中戏剧化了两个图像与第一张图像之间的差异