delphi11 LuxandFaceSDK8 jpeg 对比代码
时间: 2023-07-02 15:22:27 浏览: 84
Luxand FaceSDK 8版本的图像比较代码与之前的版本略有不同。以下是一个使用Luxand FaceSDK 8进行JPEG图像对比的示例代码:
```delphi
uses
LuxandFaceSDK, Vcl.Graphics, JPEG;
function CompareImages(const FileName1, FileName2: string): Integer;
var
Img1, Img2: TJPEGImage;
FSDKImage1, FSDKImage2: HImage;
FSDKFaceTemplate1, FSDKFaceTemplate2: HFaceTemplate;
Similarity: Single;
begin
Result := -1;
// 加载两个JPEG图像
Img1 := TJPEGImage.Create;
Img2 := TJPEGImage.Create;
try
Img1.LoadFromFile(FileName1);
Img2.LoadFromFile(FileName2);
// 将两个图像转换为FaceSDK图像
FSDKImage1 := LoadImageFromJpegFile(PAnsiChar(AnsiString(FileName1)));
FSDKImage2 := LoadImageFromJpegFile(PAnsiChar(AnsiString(FileName2)));
// 从FaceSDK图像中提取人脸特征模板
FSDKFaceTemplate1 := GetFaceTemplateInRegion(FSDKImage1, 0, 0, 0, 0);
FSDKFaceTemplate2 := GetFaceTemplateInRegion(FSDKImage2, 0, 0, 0, 0);
// 比较两个人脸特征模板的相似性
FSDKMatchFaces(FSDKFaceTemplate1, FSDKFaceTemplate2, Similarity);
// 将相似性值转换为百分比(0-100)
Result := Round(Similarity * 100);
finally
Img1.Free;
Img2.Free;
if FSDKImage1 <> 0 then FreeImage(FSDKImage1);
if FSDKImage2 <> 0 then FreeImage(FSDKImage2);
if FSDKFaceTemplate1 <> 0 then FreeFaceTemplate(FSDKFaceTemplate1);
if FSDKFaceTemplate2 <> 0 then FreeFaceTemplate(FSDKFaceTemplate2);
end;
end;
```
在这个示例中,我们首先使用Delphi的TJPEGImage类加载两个图像文件。然后,我们将这两个图像文件转换为FaceSDK图像,并从中提取人脸特征模板。最后,我们使用FaceSDK的`FSDKMatchFaces`函数比较两个人脸特征模板,计算它们之间的相似性。
请注意,这个示例中的代码可能需要根据你的具体情况进行修改。例如,你可能需要调整`GetFaceTemplateInRegion`函数返回的人脸特征模板的类型,以适应FaceSDK版本的变化。
阅读全文