图像比较并返回百分比

2023-12-06

int DiferentPixels = 0;
Bitmap first = new Bitmap("First.jpg");
Bitmap second = new Bitmap("Second.jpg");
Bitmap container = new Bitmap(first.Width, first.Height);
for (int i = 0; i < first.Width; i++)
{
    for (int j = 0; j < first.Height; j++)
    {
    int r1 = second.GetPixel(i, j).R;
    int g1 = second.GetPixel(i, j).G;
    int b1 = second.GetPixel(i, j).B;

    int r2 = first.GetPixel(i, j).R;
    int g2 = first.GetPixel(i, j).G;
    int b2 = first.GetPixel(i, j).B;

    if (r1 != r2 && g1 != g2 && b1 != b2)
    {
    DiferentPixels++;
    container.SetPixel(i, j, Color.Red);
    }
    else
    container.SetPixel(i, j, first.GetPixel(i, j));
    }
}
int TotalPixels = first.Width * first.Height;
float dierence = (float)((float)DiferentPixels / (float)TotalPixels);
float percentage = dierence * 100;

通过这部分代码,我比较了两个图像的每个像素,是的,它返回了差异的百分比,因此它将第一张图像的每个像素与第二张图像的相同索引中的像素进行比较。但是这里出了什么问题,我可能有很大的精度它不应该这样工作,比较,也许有一些更好的算法,更快、更灵活。 所以任何人都知道如何转换比较,我应该继续这样做还是应该比较每个像素的颜色或......

PS:如果有人有一个解决方案如何使这个代码并行,我也会接受它!就像将其扩展到 4 个线程一样,他们在四核中会做得更快吗?


一个明显的变化是调用GetPixel每个仅一次Bitmap,然后处理返回的Color直接构造:

for (int i = 0; i < first.Width; ++i)
{
    for (int j = 0; j < first.Height; ++j)
    {
        Color secondColor = second.GetPixel(i, j);
        Color firstColor = first.GetPixel(i, j);

        if (firstColor != secondColor)
        {
            DiferentPixels++;
            container.SetPixel(i, j, Color.Red);
        }
        else
        {
            container.SetPixel(i, j, firstColor);
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

图像比较并返回百分比 的相关文章

  • 如何使用C从http下载文件?

    最近几天我试图弄清楚如何从 URL 下载文件 这是我对套接字的第一个挑战 我用它来了解协议 所以我想在没有 cURL 库的情况下只用 C 语言来完成它 我搜索了很多 现在我可以打印页面的源代码 但我认为这与文件不同 我不必只将接收到的数据从
  • 带有 ASP.NET 按钮回发的 jQuery UI 对话框

    我的 ASP NET 页面上有一个运行良好的 jQuery UI 对话框 jQuery function jQuery dialog dialog draggable true resizable true show Transfer hi
  • 未找到 DEADLINE 调度策略

    我想在 C 中实现 DEADLINE 调度策略 我知道该功能已实现Linux 3 14 10我正在使用 Ubuntu 14 04Linux 3 17 0 031700 lowlatency 201410060605 SMP PREEMPT这
  • 使用 POST 的 HttpWebRequest 的性能

    我有一个用于测试网络服务的小工具 它可以使用 POST 或 GET 调用 Web 服务 使用POST的代码是 public void PerformRequest WebRequest webRequest WebRequest Creat
  • 我担心我添加了太多接口

    我正在构建我的领域模型并继续重构它 正如我所做的那样 我发现我喜欢接口 因为它允许我根据接口为具体类型创建可重用的方法 控制器 视图 但是 我发现每次向域实体之一添加新属性时 我都会创建一个接口 例如 我有一个会员状态从抽象继承的对象Ent
  • 重载算术运算符

    赋值运算符可以声明为 T 运算符 const t 在类中 但不能以这种方式定义算术运算符 它必须是友元函数 我不明白为什么 你能解释一下吗 算术运算符不必须是友元 那么你可以这样定义 MyClass MyClass operator con
  • ASP.NET - Crystal Report Viewer 打印按钮在 ASP.NET 中不起作用

    我正在使用 Visual Studio 2008 但我遇到了水晶报告问题 当我单击打印按钮时 它会将我带到弹出窗口 但未找到页面 弹出的网址是 http localhost aspnet client System Web 2 0 5072
  • 当我尝试传递临时地址作为参数时,它是一个 UB 吗?

    对于以下 C 代码 include
  • C# 可以为控制台应用程序部分类“程序”类吗?

    我想知道是否可以将为任何控制台应用程序创建的默认 程序 类更改为部分类 我想这样做是因为我想要更好的组织 而不是将所有方法都放在按区域分类的 1 个文件中 对我来说 将某些方法类别放在单独的文件中会更有意义 我对分部类的理解是 它是多个文件
  • main.cpp 是必需的吗?

    我试图编译一个程序cmake 我最终删除了我的main cpp文件 我刚刚将其复合到另一个包含我的项目名称的文件中 即 我刚刚将主函数剪切并粘贴到该文件中 问题是我有一个main cpp未发现错误 不确定是否在C 一个名为main cpp是
  • 如何在Windows窗体中打开进程

    我想在我的 Windows 窗体应用程序中打开进程 例如 我希望当用户按下 Windows 窗体容器之一中的按钮时 mstsc exe 将打开 如果他按下按钮 它将在另一个容器上打开 IE DllImport user32 dll SetL
  • fgets溢出后如何清除输入缓冲区?

    当输入字符串超出其预定义限制时 我遇到了 fgets 的小问题 以下面的例子为例 for index 0 index lt max index printf Enter the d string index 1 if fgets input
  • 在 Visual Studio 2012 Express 中设置 C++ 调试环境

    我需要调试的应用程序需要设置环境变量 这在 Visual Studio 2012 中似乎非常复杂 我想做类似的事情 set path c foo c bar c windows c program files application set
  • g++ / gcc 是否支持 C++20 新的atomic_flag 功能?

    根据参考参数 https en cppreference com w cpp atomic atomic flag c 20 有丰富的 对我来说有用的 支持atomic flag运营 然而 目前尚不清楚 gcc 是否支持这些功能 它们在任何
  • 让 Windows 尝试读取文件

    我正在对 Windows 文件系统进行某种封装 当用户请求打开文件时 Windows 调用我的驱动程序来提供数据 在正常操作中 驱动程序返回缓存的文件内容 但是 在某些情况下 实际文件没有缓存 我需要从网络下载它 问题是是否有可能让 Win
  • 从索贝尔确定图像梯度方向?

    我正在尝试使用 openCV 的 Sobel 方法的结果来确定图像梯度方向 我知道这应该是一个非常简单的任务 我从此处复制了许多资源和答案中的方法 但无论我做什么 所得方向始终在 0 57 度之间 我希望范围为 0 360 我相信所有的深度
  • 查找数组中的多个索引

    假设我有一个像这样的数组 string fruits watermelon apple apple kiwi pear banana 是否有一个内置函数可以让我查询 apple 的所有索引 例如 fruits FindAllIndex ap
  • 在多线程环境中捕获信号

    我有一个大型程序 需要尽可能具有弹性 并且有大量线程 我需要捕获所有信号SIGBUS SIGSEGV 并在必要时重新初始化有问题的线程 或者禁用该线程以继续减少功能 我的第一个想法是做一个setjump 然后设置信号处理程序 可以记录问题
  • C++ 中的析构函数

    我的 AB h 文件中有一个构造函数 class AB private int i public AB i 0 constructor AB i 0 destructor virtual void methodA unsigned int
  • 如何配置 qt Creator 以显示 C++ 代码而不是反汇编程序?

    昨天我做了很多事情 比如更新 GCC Clang 和重新安装 Qt Creator 今天 在逐步调试我的代码时 调试器显示的是反汇编代码 而不是我编写的 C 代码 紧迫F10 or F11 调试器正在进入汇编代码而不是 cpp nor h我

随机推荐

  • SwiftUI Map() 视图错误:不允许从视图更新中发布更改,这将导致未定义的行为

    我正在尝试构建一个小型地图应用程序 其中用户的位置一直在变化 一般来说 我总是得到纬度和经度更新 我需要显示它们并用滑动动画显示变化 类似于Apple FindMyFriend 当它们在现场移动时它在地图上滑动 这是我的观点 struct
  • Android 中 USB 网络共享模式下 PC 的 IP 地址,无需 WIFI,以编程方式

    如何在不使用 WIFI 管理器的情况下以编程方式获取 Android 手机以 USB 网络共享模式连接的 PC 的 IP 地址 默认网关和端口号 我使用了网络接口 但它没有给我正确的信息 还有其他方法吗 for Enumeration
  • 硬盘卷路径到完整文件路径

    我有一个 MSVC 应用程序 它以以下字符串格式输出其他应用程序打开的文件句柄的硬盘卷路径 Device HarddiskVolume4 Users User Documents Visual Studio 2013 Projects Fi
  • “控制到达非空函数的末尾”是什么意思?

    我在这个二分搜索算法上遇到了奇怪的编译器错误 我收到警告control reaches end of non void function 这是什么意思 int binary int val int sorted int low int hi
  • Python Pandas DataFrame - 无法在同一轴上绘制条形图和线形图

    我可能做错了什么 但我正在努力实现以下目标 plot bars and lines in the same figure sharing both x and y axes df some DataFrame with multiple c
  • 在循环中连续显示多个图像

    我正在尝试在循环内获得流显示 我的理解是 原则上我可以通过放置与按钮按下相关的无限循环来挂起程序 无论如何 当我运行这段代码时 运行计数器打印得很好 并且捕获了来自相机的帧 我可以将它们保存为一系列文件 但是 使用 setImage 的显示
  • 如何在 Bash/Debian 中获取文件创建日期/时间?

    我在 Debian GNU Linux 6 0 上使用 Bash 是否可以获得文件创建日期 时间 不是修改日期 时间 ls lh a txt and stat c y a txt两者都只给出修改时间 不幸的是 您的任务一般来说是不可能的 因
  • 格式错误,无需诊断 (NDR):C++14 中的 ConstExpr 函数抛出

    include
  • FFMPEG av_interleaved_write_frame():不允许操作

    好的 我在尝试对 MOV 文件进行编码时收到 av interleaved write frame 不允许操作 错误 首先我需要概述一下其背后的条件 我通过在 cron 上运行的 PHP 脚本对 12 个不同分辨率大小和格式类型的不同文件进
  • R:如何按组计算数据表的多列滞后

    我想计算数据表中按 id 分组的变量的差异 这是一些示例数据 数据以 1 Hz 的采样率记录 我想估计一阶和二阶导数 速度 加速度 df lt read table text x y id 1 2 1 2 4 1 3 5 1 1 8 2 5
  • 在 WPF 中连接静态资源

    我需要将字符串资源中的两个字符串连接到标签中 我想要这样的东西
  • 计算可用带宽

    我需要在 Windows 中用 C 编写代码来计算可用带宽 我目前计划使用云杉算法 我想知道在 Windows 中是否有任何可用于该算法的代码 或者是否有任何其他技术来获取互联网带宽 搜索 云杉算法 给了我这个结果http iris csa
  • 自动递增 id JSON

    我正在制作一个 RESTful Web 服务 我希望发布到 JSON 文件的项目有一个 Id 我一直在到处搜索 但找不到任何有关如何执行此操作的信息 JSON 看起来像这样 id 2 title Hello World artist Joh
  • iOS Google 地图 SDK - 隐藏/删除标签

    我在我的 iOS 项目中使用 Google Maps SDK 我正在使用 Swift 和我想在 UIView 中显示 Google 地图 不带任何文本或标签 我能够正确显示地图 但无法从地图中删除文本 我在 Javascript 中看到了同
  • 使用 node.js 解密 AES256 返回错误的最终块长度

    使用这个Gist我能够在 Node js 0 8 7 中成功解密 AES256 然后 当我升级到 Node js 0 10 24 时 我现在看到以下错误 类型错误 错误 0606506D 数字信封 例程 EVP DecryptFinal e
  • MD5 哈希加盐,用于在 C# 中将密码保存在数据库中

    您能否告诉我一些简单的算法 用于通过 MD5 哈希用户密码 但使用salt以提高可靠性 现在我有这个 private static string GenerateHash string value var data System Text
  • 在 JavaScript 中获取 CSS 类名

    我面临着从 JavaScript 中的字符串获取类名的问题 例如 var ddd p class Box title Heading text here p 现在我想从中获取 p 标签的类名 浏览器擅长 HTML 解析 setup var
  • 如何获取 kivy 按钮的 Id 和 Text 值作为字符串?

    我有一个带有多个按钮的应用程序 我需要在按下按钮时以字符串形式获取按钮的 id 和文本值 然后 抓取的按钮 ID 和文本值将被传递到另一个函数以进行进一步处理 为了简单起见 我编写了这个示例程序 main py from kivy app
  • ZMQ ROUTER中的客户端维护

    ZeroMQ ROUTER 套接字如何在内部维护其客户端连接 该指南称每个客户都会获得一个唯一的 ID 但并不清楚 什么算作客户端 每台机器不同的客户端或每个连接的应用程序不同 从客户端收到的请求数量是否有限制 原因是 我正在对这段代码进行
  • 图像比较并返回百分比

    int DiferentPixels 0 Bitmap first new Bitmap First jpg Bitmap second new Bitmap Second jpg Bitmap container new Bitmap f