Browse Source

双目已集成

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

34
CPF_Cef/Common/ChunkedUpload.cs

@ -547,14 +547,6 @@ namespace AksWebBrowser.Common
string parameters = jo3["parameters"].ToString(); string parameters = jo3["parameters"].ToString();
JObject jo4 = (JObject)JsonConvert.DeserializeObject(parameters); JObject jo4 = (JObject)JsonConvert.DeserializeObject(parameters);
string base64 = jo4["face_data"].ToString(); string base64 = jo4["face_data"].ToString();
if (Parame.isSM)
{
var faceA = Utils.Base64ByImages(base64);
//开启人脸比对
LhtCF lht = new LhtCF();
string stat = lht.LhtCFFace("", faceA);
if (stat == "100")
{
IDCardModel iDCardModel = new IDCardModel(); IDCardModel iDCardModel = new IDCardModel();
iDCardModel.Name = jo4["cn_name"].ToString(); iDCardModel.Name = jo4["cn_name"].ToString();
iDCardModel.Sex = jo4["sex"].ToString(); iDCardModel.Sex = jo4["sex"].ToString();
@ -573,32 +565,6 @@ namespace AksWebBrowser.Common
return JsonConvert.SerializeObject(OBJ); return JsonConvert.SerializeObject(OBJ);
} }
else 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);
}
}
else
{ {
//关闭 //关闭
return "200"; return "200";

33
CPF_Cef/Common/Utils.cs

@ -159,6 +159,39 @@ namespace AksWebBrowser.Common
return Imgpath; 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>
/// 文字分段 /// 文字分段
/// </summary> /// </summary>

6
CPF_Cef/FrmMain.cs

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

130
CPF_Cef/MainModel.cs

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

4
CPF_Cef/Parame.cs

@ -44,9 +44,11 @@ namespace AksWebBrowser
//是否开启高拍仪 //是否开启高拍仪
public static bool isGPY = false; 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 string messageData { get; set; }
//人脸比对阈值
public static int score = 65;
} }
public struct Func public struct Func
{ {

Loading…
Cancel
Save