001package net.gdface.sdk; 002 003import java.util.Arrays; 004import java.util.LinkedHashMap; 005import net.gdface.utils.Assert; 006 007/** 008 * 人脸特å¾1:N比较结果对象<br> 009 * 用于ä¿å˜{@link FaceApi#compareFaces(byte[], byte[], int)}方法调用的返回结果 010 * @author guyadong 011 * 012 */ 013public class CompareResult { 014 /** 015 * 检测到的人脸信æ¯å¯¹è±¡(å«ç‰¹å¾) 016 */ 017 CodeInfo[] codes; 018 /** 019 * 与codes数组ä¸å¯¹åº”ç´¢å¼•æŒ‡å®šçš„äººè„¸ç‰¹å¾æ¯”较产生的相似度结果 020 */ 021 double[] similartys; 022 public CompareResult() { 023 this(new CodeInfo[0], new double[0]); 024 } 025 public CompareResult(CodeInfo[] codes, double[] similartys) { 026 Assert.notNull(codes, "codes"); 027 Assert.notNull(similartys, "similartys"); 028 Assert.isTrue(codes.length == similartys.length, "codes.length == similartys.length"); 029 this.codes = codes; 030 this.similartys = similartys; 031 } 032 /** 033 * @return codes 034 */ 035 public CodeInfo[] getCodes() { 036 return codes; 037 } 038 /** 039 * @param codes è¦è®¾ç½®çš„ codes 040 */ 041 public void setCodes(CodeInfo[] codes) { 042 this.codes = codes; 043 } 044 /** 045 * @return similartys 046 */ 047 public double[] getSimilartys() { 048 return similartys; 049 } 050 /** 051 * @param similartys è¦è®¾ç½®çš„ similartys 052 */ 053 public void setSimilartys(double[] similartys) { 054 this.similartys = similartys; 055 } 056 057 /** 058 * 将比较结果以 CodeInfo--similarity 值对的形å¼è¿”回,顺åºä¸Ž 059 * @return map instance 060 */ 061 public LinkedHashMap<CodeInfo,Double> asMap(){ 062 LinkedHashMap<CodeInfo,Double> map = new LinkedHashMap<>(); 063 for(int i=0;i<codes.length;++i){ 064 map.put(codes[i], similartys[i]); 065 } 066 return map; 067 } 068 @Override 069 public int hashCode() { 070 final int prime = 31; 071 int result = 1; 072 result = prime * result + Arrays.hashCode(codes); 073 result = prime * result + Arrays.hashCode(similartys); 074 return result; 075 } 076 077 @Override 078 public boolean equals(Object obj) { 079 if (this == obj) 080 return true; 081 if (obj == null) 082 return false; 083 if (!(obj instanceof CompareResult)) 084 return false; 085 CompareResult other = (CompareResult) obj; 086 if (!Arrays.equals(codes, other.codes)) 087 return false; 088 if (!Arrays.equals(similartys, other.similartys)) 089 return false; 090 return true; 091 } 092 093 @Override 094 public String toString() { 095 StringBuilder builder = new StringBuilder(); 096 builder.append("CompareResult [codes="); 097 builder.append(Arrays.toString(codes)); 098 builder.append(", similartys="); 099 builder.append(Arrays.toString(similartys)); 100 builder.append("]"); 101 return builder.toString(); 102 } 103}