Browse Source

双目已集成

master
胡超1 1 year ago
parent
commit
d16be0e358
  1. 64
      CPF_Cef/Common/ChunkedUpload.cs
  2. 33
      CPF_Cef/Common/Utils.cs
  3. 6
      CPF_Cef/FrmMain.cs
  4. 134
      CPF_Cef/MainModel.cs
  5. 4
      CPF_Cef/Parame.cs

64
CPF_Cef/Common/ChunkedUpload.cs

@ -547,56 +547,22 @@ namespace AksWebBrowser.Common
string parameters = jo3["parameters"].ToString();
JObject jo4 = (JObject)JsonConvert.DeserializeObject(parameters);
string base64 = jo4["face_data"].ToString();
if (Parame.isSM)
IDCardModel iDCardModel = new IDCardModel();
iDCardModel.Name = jo4["cn_name"].ToString();
iDCardModel.Sex = jo4["sex"].ToString();
iDCardModel.Nation = jo4["nation"].ToString();
iDCardModel.BirthDay = jo4["birth_date"].ToString();
iDCardModel.Addr = jo4["address"].ToString();
iDCardModel.Id = jo4["idcard_number"].ToString();
iDCardModel.Regorg = jo4["deparment"].ToString();
iDCardModel.StartDate = jo4["validity_begin"].ToString();
iDCardModel.EndDate = jo4["balidity_end"].ToString();
iDCardModel.ImageBase64 = "data:image/jpg;base64," + base64;
var OBJ = new
{
var faceA = Utils.Base64ByImages(base64);
//开启人脸比对
LhtCF lht = new LhtCF();
string stat = lht.LhtCFFace("", faceA);
if (stat == "100")
{
IDCardModel iDCardModel = new IDCardModel();
iDCardModel.Name = jo4["cn_name"].ToString();
iDCardModel.Sex = jo4["sex"].ToString();
iDCardModel.Nation = jo4["nation"].ToString();
iDCardModel.BirthDay = jo4["birth_date"].ToString();
iDCardModel.Addr = jo4["address"].ToString();
iDCardModel.Id = jo4["idcard_number"].ToString();
iDCardModel.Regorg = jo4["deparment"].ToString();
iDCardModel.StartDate = jo4["validity_begin"].ToString();
iDCardModel.EndDate = jo4["balidity_end"].ToString();
iDCardModel.ImageBase64 = "data:image/jpg;base64," + base64;
var OBJ = new
{
Data = iDCardModel
};
return JsonConvert.SerializeObject(OBJ);
}
else
{
return "500";
}
}
else
{
IDCardModel iDCardModel = new IDCardModel();
iDCardModel.Name = jo4["cn_name"].ToString();
iDCardModel.Sex = jo4["sex"].ToString();
iDCardModel.Nation = jo4["nation"].ToString();
iDCardModel.BirthDay = jo4["birth_date"].ToString();
iDCardModel.Addr = jo4["address"].ToString();
iDCardModel.Id = jo4["idcard_number"].ToString();
iDCardModel.Regorg = jo4["deparment"].ToString();
iDCardModel.StartDate = jo4["validity_begin"].ToString();
iDCardModel.EndDate = jo4["balidity_end"].ToString();
iDCardModel.ImageBase64 = "data:image/jpg;base64," + base64;
var OBJ = new
{
Data = iDCardModel
};
return JsonConvert.SerializeObject(OBJ);
}
Data = iDCardModel
};
return JsonConvert.SerializeObject(OBJ);
}
else
{

33
CPF_Cef/Common/Utils.cs

@ -159,6 +159,39 @@ namespace AksWebBrowser.Common
return Imgpath;
}
//base64转图片
public static string Base64ByImagesPath(string base64, string filename)
{
//生成文件
string dirpath = Utils.getSystemPaht() + @"/wwwroot/TmpFile";
if (!Directory.Exists(dirpath))
{
Directory.CreateDirectory(dirpath);
}
var tempFile = dirpath + $"/{filename}.txt";
using (StreamWriter sw = new StreamWriter(tempFile))
{
sw.Write(base64);
sw.Close();
sw.Dispose();
}
//生成图片
string dirpath1 = Utils.getSystemPaht() + @"/wwwroot/TmpFile";
if (!Directory.Exists(dirpath1))
{
Directory.CreateDirectory(dirpath1);
}
var Imgpath = dirpath1 + $"/{filename}.jpg";
string command = $"base64 -d {tempFile} > {Imgpath}";
MainModel.ShllCommad(command);
//删除图片
Task.Run(() =>
{
File.Delete(tempFile);
});
return Imgpath;
}
/// <summary>
/// 文字分段
/// </summary>

6
CPF_Cef/FrmMain.cs

@ -18,8 +18,10 @@ namespace AKS.EnterpriseLibrary.WebBrowser
{
public class FrmMain : Window
{
public int h= 1080;
public int w = 1920;
public int w = 1080;
public int h = 1920;
//public int h = 1080;
//public int w = 1920;
protected override void InitializeComponent()
{

134
CPF_Cef/MainModel.cs

@ -32,6 +32,7 @@ namespace AKS.EnterpriseLibrary.WebBrowser
public class MainModel : CPF.CpfObject
{
private static List<IWebSocketConnection> allSockets;
//初始化网络连接
public static void DeviceControllerInit()
{
@ -245,19 +246,8 @@ namespace AKS.EnterpriseLibrary.WebBrowser
/// <returns></returns>
public static string IDCardRead(string content)
{
try
{
Task.Run(async () =>
{
StartFace(IdcardStr);
});
@event9.WaitOne();
var param = content.ConvertToAnonymousType(new
{
code = default(string),
@ -272,24 +262,59 @@ namespace AKS.EnterpriseLibrary.WebBrowser
}
else
{
if (IdcardStr == "500")
{
result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "身份证持有者非本人" + "\"}";
}
else if (IdcardStr.Contains("HttpClient.Timeout"))
if (IdcardStr.Contains("HttpClient.Timeout"))
{
result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "身份证读取失败" + "\"}";
}
else
{
result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"seccse\",\"code\":\"200\",\"status\":true,\"data\":" + IdcardStr + "}";
if (Parame.isSM)
{
Task.Run(async () =>
{
StartFace(IdcardStr);
JObject jo = (JObject)JsonConvert.DeserializeObject(IdcardStr);
string data = jo["Data"].ToString();
jo = (JObject)JsonConvert.DeserializeObject(data);
string ImageBase64 = jo["ImageBase64"].ToString();
StartFace(ImageBase64);
});
@event9.WaitOne();
if (!string.IsNullOrEmpty(smresults))
{
if (smresults == "200")
{
result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"seccse\",\"code\":\"200\",\"status\":true,\"data\":" + IdcardStr + "}";
}
else if (smresults == "500")
{
result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "人证合一验证超时" + "\"}";
}
else if (smresults == "600")
{
result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "人证合一活体检测失败" + "\"}";
}
else if (smresults == "700")
{
result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "服务端连接异常" + "\"}";
}
else if (smresults == "800")
{
result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "身份证持有者非本人" + "\"}";
}
else
{
result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "人证合一验证失败。" + "\"}";
}
}
else
{
result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "人证合一验证失败." + "\"}";
}
}
else
{
result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"seccse\",\"code\":\"200\",\"status\":true,\"data\":" + IdcardStr + "}";
}
return result;
}
@ -1625,7 +1650,7 @@ namespace AKS.EnterpriseLibrary.WebBrowser
/// </summary>
private static string smresults = string.Empty;
private static AutoResetEvent @event9 = new AutoResetEvent(false);
private static async void StartFace(string IdcardStr)
private static async void StartFace(string ImageBase64)
{
try
{
@ -1635,10 +1660,11 @@ namespace AKS.EnterpriseLibrary.WebBrowser
function = "CF_OpenCamera",
show = 1,
fx = 200,
fy = 450,
fw = 640,
fh = 480
fy = 800,
fw = 800,
fh = 600
};
Task.Delay(1000).Wait();
//打开摄像头
webSocket.Send(JsonConvert.SerializeObject(mode), "CF_OpenCamera");
//开始活检
@ -1647,36 +1673,72 @@ namespace AKS.EnterpriseLibrary.WebBrowser
{
//关闭摄像头
webSocket.Send("{\"function\":\"CF_CloseCamera\"}", "CF_CloseCamera");
//关闭连接
webSocket.Close();
}
else if (smresults == "700")//服务端未启动
{
//关闭连接
webSocket.Close();
}
{ webSocket.Close(); }
else
{
JObject jo = (JObject)JsonConvert.DeserializeObject(smresults);
string nEventId = jo["nEventId"].ToString();
if (nEventId == "100")
{
string faceA = Utils.Base64ByImages(IdcardStr);
string faceB = Utils.Base64ByImages(jo["ImgBase64"].ToString());
//var faceA = "/data/home/aks/aks/wwwroot/TmpFile/faceA.jpg";
//var faceB = "/data/home/aks/aks/wwwroot/TmpFile/faceB.jpg";
string faceA = Utils.Base64ByImagesPath(ImageBase64.Replace("data:image/jpg;base64,", ""), "faceA");
string faceB = Utils.Base64ByImagesPath(jo["ImgBase64"].ToString(), "faceB");
var mode2 = new
{
function = "CF_FaceCompare",
filePathA = faceA,
filePathB = faceB
};
//开始人脸比对
smresults = await webSocket.Send(JsonConvert.SerializeObject(mode2), "CF_FaceCompare");
Log.Info(smresults);
//停止活检
webSocket.Send("{\"function\":\"CF_StopLiveDetect\"}", "CF_StopLiveDetect");
//关闭摄像头
webSocket.Send("{\"function\":\"CF_CloseCamera\"}", "CF_CloseCamera");
if (smresults == "500" || smresults == "400")//500:超时,400:接收数据错误
{
//关闭摄像头
webSocket.Send("{\"function\":\"CF_CloseCamera\"}", "CF_CloseCamera");
webSocket.Close();
}
else if (smresults == "700")//服务端未启动
{ webSocket.Close(); }
else
{
jo = (JObject)JsonConvert.DeserializeObject(smresults);
string success = jo["success"].ToString();
if (success == "0")
{
string score = jo["score"].ToString();
if (Convert.ToInt32(score) >= Parame.score)
{
smresults = "200";//比对成功
}
else
{
smresults = "800";//非本人
}
}
else
{
smresults = "400";
}
}
}
else
{
//停止活检
webSocket.Send("{\"function\":\"CF_StopLiveDetect\"}", "CF_StopLiveDetect");
//关闭摄像头
webSocket.Send("{\"function\":\"CF_CloseCamera\"}", "CF_CloseCamera");
//活体检测失败
smresults = "600";
}
//停止活检
webSocket.Send("{\"function\":\"CF_StopLiveDetect\"}", "CF_StopLiveDetect");
//关闭摄像头
webSocket.Send("{\"function\":\"CF_CloseCamera\"}", "CF_CloseCamera");
//关闭连接
webSocket.Close();
}
@event9.Set();

4
CPF_Cef/Parame.cs

@ -44,9 +44,11 @@ namespace AksWebBrowser
//是否开启高拍仪
public static bool isGPY = false;
//双目摄像头
public static string smWebsocket = "ws://192.168.0.234:22226";
public static string smWebsocket = "ws://127.0.0.1:22226";
//消息推送
public static string messageData { get; set; }
//人脸比对阈值
public static int score = 65;
}
public struct Func
{

Loading…
Cancel
Save