delphi11 jpg FSDK_MatchFaces 对比代码
时间: 2023-11-17 13:04:51 浏览: 71
以下是使用 Delphi 11 FSDK_MatchFaces 进行人脸比对的示例代码,其中包括将 JPG 格式的图像转换为 HImage 对象的代码:
```delphi
uses LuxandFaceSDK, System.Classes, System.SysUtils, Vcl.Graphics, Vcl.Imaging.jpeg;
function CompareFaces(jpg1, jpg2: TMemoryStream): Integer;
var
img1, img2: HImage;
score: TFaceSimilarity;
jpeg1, jpeg2: TJPEGImage;
begin
img1 := nil;
img2 := nil;
jpeg1 := TJPEGImage.Create;
jpeg2 := TJPEGImage.Create;
try
jpeg1.LoadFromStream(jpg1);
jpeg2.LoadFromStream(jpg2);
img1 := FSDK_LoadImageFromJPEGStream(jpg1);
img2 := FSDK_LoadImageFromJPEGStream(jpg2);
FSDK_MatchFaces(img1, img2, @score);
Result := Round(score * 100);
finally
jpeg1.Free;
jpeg2.Free;
if img1 <> nil then FSDK_FreeImage(img1);
if img2 <> nil then FSDK_FreeImage(img2);
end;
end;
```
上面的代码定义了一个名为 CompareFaces 的函数,该函数接收两个 TMemoryStream 类型的 JPG 图像作为参数,并返回它们之间的相似度得分,得分是一个整数类型的百分比值。
在函数中,我们首先创建 TJPEGImage 对象,然后调用 LoadFromStream 方法将 JPG 图像加载到对象中。接着,我们通过调用 FSDK_LoadImageFromJPEGStream 函数将 TJPEGImage 对象转换为 HImage 对象。然后,我们再调用 FSDK_MatchFaces 函数计算它们之间的相似度得分。最后,我们将得分乘以100并四舍五入,以得到最终的百分比值。
请注意,在函数最后,我们需要使用 FSDK_FreeImage 函数释放 HImage 对象占用的内存空间,以避免内存泄漏。同时,我们也需要调用 TJPEGImage 对象的 Free 方法释放占用的内存空间。
阅读全文