gpt4 book ai didi

c# - 图像比较和返回百分比

转载 作者:行者123 更新时间:2023-11-30 19:03:08 24 4
gpt4 key购买 nike

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;

代码的这一部分我比较了每个像素的 2 个图像,是的,它的工作原理是它返回的差异百分比,所以它将第一张图像的每个像素与第二张图像的相同索引中的像素进行比较。但是这里有什么问题,我有一个巨大的精度也许它不应该那样工作,比较,也许有一些更好的算法更快更灵活。所以任何人都知道我如何改变比较,我应该继续那个还是我应该比较每个像素的颜色或......

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

最佳答案

一个明显的变化是每个 Bitmap 只调用一次 GetPixel,然后直接使用返回的 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);
}
}
}

关于c# - 图像比较和返回百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6598048/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com