gpt4 book ai didi

C# 比较两个图像之间的像素并只写出差异的更快方法

转载 作者:太空狗 更新时间:2023-10-30 00:20:27 24 4
gpt4 key购买 nike

只是对两个非常相似的图像(一个是另一个的编辑版本)进行逐像素比较,并将差异写入新文件。

for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
pix1 = src.GetPixel(x, y);
pix2 = comp.GetPixel(x, y);
if (pix1 != pix2)
{
dest.SetPixel(x, y, pix1);
}
}
}

srccomp 是要比较的两个图像,dest 只是一个新图像。这需要相当长的时间。

执行此操作的更快方法是什么?
也许没有必要实际获取像素来进行比较?

最佳答案

要比较您需要读取的像素。但是,GetPixel() 是执行此操作的一种非常慢的方法,除非您只是检查非常少量的数据,否则不推荐使用。

要获得更好的性能,最好的方法是使用不安全代码并改用指针。互联网上有很多这方面的示例,下面是我发现的一个,它稍微解释了问题并提供了两种不同的解决方案。

http://davidthomasbernal.com/blog/2008/03/13/c-image-processing-performance-unsafe-vs-safe-code-part-i

一定要检查第二部分,他有一些基准和完整源代码的链接。

关于C# 比较两个图像之间的像素并只写出差异的更快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11662354/

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