我需要比较 2 张图片并找到与指定阈值不同的像素。现在我只是在 for 循环中以编程方式进行操作,对于 600x400 的小图片大约需要 3 秒。我想知道是否有办法使用 OpenGL、DirectX、CUDA 或类似的东西更快地做到这一点?所以它将使用 GPU 而不仅仅是 CPU。请注意,在输出中我需要一个不同像素的数组,而不仅仅是布尔值,这取决于它是否相同。
所以我在delphi中查看了源代码,它看起来像这样:
function TCanvas.GetPixel(X, Y: Integer): TColor;
begin
RequiredState([csHandleValid]);
GetPixel := Windows.GetPixel(FHandle, X, Y);
end;
似乎它每次都调用 WinAPI 函数 GetPixel() 。可能这就是它如此缓慢的原因。所以现在我的问题是:有没有办法通过 WinAPI 获取整个像素数组?我正在使用具有 HBITMAP 的屏幕截图,因此将它与 WinAPI 一起使用不会有问题。