/// <summary> /// 增加一条数据 /// </summary> public bool Add(DataAngineSet.Model.person_dataset model) { StringBuilder strSql = new StringBuilder(); strSql.Append("insert into person_dataset("); strSql.Append("name,type,source,create_time,remark)"); strSql.Append(" values ("); strSql.Append("@name,@type,@source,@create_time,@remark)"); MySqlParameter[] parameters = { new MySqlParameter("@name", MySqlDbType.VarChar, 50), new MySqlParameter("@type", MySqlDbType.VarChar, 50), new MySqlParameter("@source", MySqlDbType.VarChar, 50), new MySqlParameter("@create_time", MySqlDbType.DateTime), new MySqlParameter("@remark", MySqlDbType.VarChar, 50) }; parameters[0].Value = model.name; parameters[1].Value = model.type; parameters[2].Value = model.source; parameters[3].Value = model.create_time; parameters[4].Value = model.remark; int rows = DbHelperMySQL.ExecuteSql(strSql.ToString(), parameters); if (rows > 0) { return(true); } else { return(false); } }
/// <summary> /// 得到一个对象实体 /// </summary> public DataAngineSet.Model.person_dataset DataRowToModel(DataRow row) { DataAngineSet.Model.person_dataset model = new DataAngineSet.Model.person_dataset(); if (row != null) { if (row["id"] != null && row["id"].ToString() != "") { model.id = int.Parse(row["id"].ToString()); } if (row["name"] != null) { model.name = row["name"].ToString(); } if (row["type"] != null) { model.type = row["type"].ToString(); } if (row["source"] != null) { model.source = row["source"].ToString(); } if (row["create_time"] != null && row["create_time"].ToString() != "") { model.create_time = DateTime.Parse(row["create_time"].ToString()); } if (row["remark"] != null) { model.remark = row["remark"].ToString(); } } return(model); }
public override void OnPost(HttpRequest request, HttpResponse response) { if (request.RestConvention != null)//根据ID获得数据库 { Log.Debug(string.Format("返回数据库{0}的信息", request.RestConvention)); int id = -1; try { id = Convert.ToInt32(request.RestConvention); } catch { } SearchInfo searchinfo = SearchInfo.CreateInstanceFromJSON(request.PostParams); if (searchinfo != null) { DataAngineSet.Model.person_dataset ds = new DataAngineSet.Model.person_dataset(); ds = person_datasetbll.GetModel(id); //int num = bll.GetListByTime(searchinfo.StartTime, searchinfo.EndTime, ds.id.ToString()).Tables[0].Rows.Count; HitAlertData[] ha = HitAlertData.CreateInstanceFromDataAngineDataSet(bll.GetListByTime(searchinfo.StartTime, searchinfo.EndTime, searchinfo.StartIndex, searchinfo.PageSize, ds.id.ToString())); HitAlertData[] haALL = HitAlertData.CreateInstanceFromDataAngineDataSet(bll.GetListByTime_TaskId(searchinfo.StartTime, searchinfo.EndTime, ds.id.ToString())); JObject jo = new JObject(new JProperty("num", haALL.Length), new JProperty("pageData", JsonConvert.DeserializeObject(JsonConvert.SerializeObject(ha)))); response.SetContent(JsonConvert.SerializeObject(jo)); } //if(request.GetParams!=null) //{ // DateTime starttime=new DateTime(); // DateTime endtime=new DateTime(); // int startindex = 0; // int pagesize = 30; // starttime = Convert.ToDateTime(request.GetParams["starttime"]); // endtime = Convert.ToDateTime(request.GetParams["endtime"]); // startindex = Convert.ToInt32(request.GetParams["startindex"]); // pagesize = Convert.ToInt32(request.GetParams["pagesize"]); // HitAlertData[] ha = HitAlertData.CreateInstanceFromDataAngineDataSet(bll.GetListByTime(starttime, endtime, startindex, pagesize, library)); // response.SetContent(JsonConvert.SerializeObject(ha)); //} } else { Log.Debug("轨迹查询"); Trajectory_Search trajectory_search = Trajectory_Search.CreateInstanceFromJSON(request.PostParams); if (trajectory_search != null) { HitAlertData_Trajectory_Search[] ha = HitAlertData_Trajectory_Search.CreateInstanceFromDataAngineDataSet(bll.GetListById(trajectory_search.UserId, trajectory_search.StartTime, trajectory_search.EndTime, trajectory_search.StartIndex, trajectory_search.PageSize)); HitAlertData_Trajectory_Search[] haALL = HitAlertData_Trajectory_Search.CreateInstanceFromDataAngineDataSet(bll.GetListById(trajectory_search.UserId, trajectory_search.StartTime, trajectory_search.EndTime)); JObject jo = new JObject(new JProperty("num", haALL.Length), new JProperty("pageData", JsonConvert.DeserializeObject(JsonConvert.SerializeObject(ha)))); response.SetContent(JsonConvert.SerializeObject(jo)); } } response.Send(); }
bool Init(int taskID) { DataAngineSet.Model.surveillance_task task = taskBll.GetModel(taskID); if (null == task) { Log.Debug("检索任务失败"); return(false); } DataAngineSet.Model.device device = deviceBll.GetModel(task.device_id); if (null == device) { Log.Debug("检索设备失败"); return(false); } DataAngineSet.Model.person_dataset person_dataset = datasetBll.GetModel(task.person_dataset_id); if (null == person_dataset) { Log.Debug("检索库失败"); return(false); } InitFRS(); fa.LoadData(person_dataset.id); cap.TaskID = taskID; cap.HitAlertReturnEvent += new Capture.HitAlertCallback(OnHit); int id = -1; try { Log.Debug(device.video_address); id = Convert.ToInt32(device.video_address); } catch { } if (id == -1) { if (cap.Start(device.video_address) != ReturnCode.SUCCESS) { Log.Debug("打开摄像头失败"); return(false); } } else { if (cap.Start(id) != ReturnCode.SUCCESS) { Log.Debug("打开摄像头失败"); return(false); } } return(true); }
/// <summary> /// 更新一条数据 /// </summary> public bool Update(DataAngineSet.Model.person_dataset model) { StringBuilder strSql = new StringBuilder(); strSql.Append("update person_dataset set "); strSql.Append("name=@name,"); strSql.Append("type=@type,"); strSql.Append("source=@source,"); strSql.Append("create_time=@create_time,"); strSql.Append("remark=@remark"); strSql.Append(" where id=@id"); MySqlParameter[] parameters = { new MySqlParameter("@name", MySqlDbType.VarChar, 50), new MySqlParameter("@type", MySqlDbType.VarChar, 50), new MySqlParameter("@source", MySqlDbType.VarChar, 50), new MySqlParameter("@create_time", MySqlDbType.DateTime), new MySqlParameter("@remark", MySqlDbType.VarChar, 50), new MySqlParameter("@id", MySqlDbType.Int32, 11) }; parameters[0].Value = model.name; parameters[1].Value = model.type; parameters[2].Value = model.source; parameters[3].Value = model.create_time; parameters[4].Value = model.remark; parameters[5].Value = model.id; int rows = DbHelperMySQL.ExecuteSql(strSql.ToString(), parameters); if (rows > 0) { return(true); } else { return(false); } }
/// <summary> /// 得到一个对象实体 /// </summary> public DataAngineSet.Model.person_dataset GetModel(string name) { StringBuilder strSql = new StringBuilder(); strSql.Append("select id,name,type,source,create_time,remark from person_dataset "); strSql.Append(" where name=@name"); MySqlParameter[] parameters = { new MySqlParameter("@name", MySqlDbType.String) }; parameters[0].Value = name; DataAngineSet.Model.person_dataset model = new DataAngineSet.Model.person_dataset(); DataSet ds = DbHelperMySQL.Query(strSql.ToString(), parameters); if (ds.Tables[0].Rows.Count > 0) { return(DataRowToModel(ds.Tables[0].Rows[0])); } else { return(null); } }
/// <summary> /// Post时调用 /// </summary> public override void OnPost(HttpRequest request, HttpResponse response) { bool status = false; //OneVsOne if (request.RestConvention == "0") { Log.Debug("比较图片"); //http://127.0.0.1:8080/v1/verify/0 //VerifyOneVsOne verify = VerifyOneVsOne.CreateInstanceFromJSON(request.PostParams); string result = Base64Decode(request.PostParams); VerifyOneVsOne verify = VerifyOneVsOne.CreateInstanceFromJSON(result); if (verify != null) { double score = 0; //初始化 InitFRS(); if (verify.PicSrc != null && verify.PicDst != null) { Bitmap Bitmapsrc = Base64ToImage(verify.PicSrc); Bitmap Bitmapdst = Base64ToImage(verify.PicDst); Bitmap bmpsrc = new Bitmap(Bitmapsrc.Width, Bitmapsrc.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); Graphics.FromImage(bmpsrc).DrawImage(Bitmapsrc, new Rectangle(0, 0, bmpsrc.Width, bmpsrc.Height)); Bitmap bmpdst = new Bitmap(Bitmapdst.Width, Bitmapdst.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); Graphics.FromImage(bmpdst).DrawImage(Bitmapdst, new Rectangle(0, 0, bmpdst.Width, bmpdst.Height)); Bitmapsrc.Save("Bitmapsrc.jpg"); Bitmapdst.Save("Bitmapdst.jpg"); score = fa.Compare(bmpsrc, bmpdst); bmpsrc.Dispose(); bmpdst.Dispose(); } else { //Image src = Image.FromFile(verify.PicSrc_Path); Image src = Get_UrlImage(verify.PicSrc_Path); //Image dst = Image.FromFile(verify.PicDst_Path); Image dst = Get_UrlImage(verify.PicDst_Path); score = fa.Compare(src, dst); } Log.Debug(string.Format("相似度:{0}", score)); response.SetContent(JsonConvert.SerializeObject(score)); //response.SetContent("0.8"); } } else { Log.Debug("查找图片"); //VerifyOneVsN verify = VerifyOneVsN.CreateInstanceFromJSON(request.PostParams); string result = Base64Decode(request.PostParams); VerifyOneVsN verify = VerifyOneVsN.CreateInstanceFromJSON(result); if (verify != null) { int DatasetId = Convert.ToInt32(request.RestConvention); DataAngineSet.Model.person_dataset ds = new DataAngineSet.Model.person_dataset(); ds = bll.GetModel(DatasetId); // 获取Post的阈值和top值 double ScoreThresh = Convert.ToDouble(verify.ScoreThresh); int TopK = Convert.ToInt32(verify.TopK); if (ScoreThresh == 0) { ScoreThresh = 0.6; } if (TopK == 0) { TopK = 3; } //初始化 InitFRS(); fa.LoadData(DatasetId); Log.Debug(string.Format("初始阈值:{0}", fa.ScoreThresh)); Log.Debug(string.Format("初始top值:{0}", fa.TopK)); // 设置阈值和top值 fa.ScoreThresh = (float)ScoreThresh; fa.TopK = TopK; Log.Debug(string.Format("设置阈值:{0}", fa.ScoreThresh)); Log.Debug(string.Format("设置top值:{0}", fa.TopK)); FRS.HitAlert[] hits; if (verify.PicSrc != null) { Bitmap Bitmapsrc = Base64ToImage(verify.PicSrc); Bitmap bmpsrc = new Bitmap(Bitmapsrc.Width, Bitmapsrc.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); Graphics.FromImage(bmpsrc).DrawImage(Bitmapsrc, new Rectangle(0, 0, bmpsrc.Width, bmpsrc.Height)); //Bitmapsrc.Save("Bitmapsrc.jpg"); hits = fa.Search(bmpsrc); bmpsrc.Dispose(); } else { //Image src = Image.FromFile(verify.PicSrc_Path); Image src = Get_UrlImage(verify.PicSrc_Path); hits = fa.Search(src); } string msg = JsonConvert.SerializeObject(Model.HitAlert.CreateInstanceFromFRSHitAlert(hits)); if (hits == null) { JObject jo = new JObject(new JProperty("num", 0)); response.SetContent(JsonConvert.SerializeObject(jo)); } response.SetContent(msg); } } response.Send(); }
/// <summary> /// Post时调用 /// </summary> public override void OnPost(HttpRequest request, HttpResponse response) { bool status = false; if (request.Operation == null)//添加一条数据 { Log.Debug("添加一个人员库"); AddInfo addinfo = AddInfo.CreateInstanceFromJSON(request.PostParams); if (addinfo != null) { DataAngineSet.Model.person_dataset ds = new DataAngineSet.Model.person_dataset(); ds.name = addinfo.Name; ds.type = addinfo.Type; ds.source = addinfo.Source; ds.create_time = addinfo.CreateTime; ds.remark = addinfo.Remark; status = bll.Add(ds); if (status) { Log.Debug(string.Format("创建人员库成功")); //初始化 //InitFRS(); //int num = fa.RegisterInBulk1(addinfo.Path, ds.datasetname); //Log.Debug(string.Format("共注册{0}人", num)); } } response.SetContent(status.ToString()); } else { if (request.Operation == "update")//更新 { PersonDataSet persondataset = PersonDataSet.CreateInstanceFromJSON(request.PostParams); if (null != persondataset) { status = bll.Update(persondataset.ToDataAngineModel()); } response.SetContent(status.ToString()); } else if (request.Operation == "delete")//删除 { Log.Debug("删除更新一个人员库"); int id = -1; try { id = Convert.ToInt32(request.RestConvention); } catch { } status = bll.Delete(id); //删除设备 response.SetContent(status.ToString()); } else if (request.Operation == "list") { Log.Debug(string.Format("返回所有库信息")); SearchInfo_PersonDateSet searchinfo = SearchInfo_PersonDateSet.CreateInstanceFromJSON(request.PostParams); if (searchinfo != null) { //int num = bll.DataTableToList(bll.GetAllList().Tables[0]).Count; List <DataAngineSet.Model.person_dataset> datasets = bll.DataTableToList(bll.GetAllList(searchinfo.StartIndex, searchinfo.PageSize, "").Tables[0]); response.SetContent(JsonConvert.SerializeObject(PersonDataSet.CreateInstanceFromDataAngineModel(datasets.ToArray()))); } } } response.Send(); }