2 つの写真を比較し、指定されたしきい値と異なるピクセルを見つける必要があります。今、プログラムで for ループで実行しています。小さな 600x400 画像の場合、約 3 秒かかります。OpenGL、DirectX、CUDA、またはこのようなものを使用して高速化する方法があるかどうか疑問に思っていますか? そのため、CPU だけでなく GPU も使用します。出力では、同じ画像かどうかに応じてブール値だけでなく、さまざまなピクセルの配列が必要であることに注意してください。
だから私はデルファイのソースを見て、次のように見えます:
function TCanvas.GetPixel(X, Y: Integer): TColor;
begin
RequiredState([csHandleValid]);
GetPixel := Windows.GetPixel(FHandle, X, Y);
end;
毎回 WinAPI 関数 GetPixel() を呼び出すようです。おそらくそれがとても遅い理由です。だから今私の質問は: WinAPI 経由でピクセルの配列全体を取得する方法はありますか? HBITMAP を含むスクリーンショットで作業しているので、WinAPI で使用しても問題ありません。