/// <summary> /// 定时任务,自动比对异常表信号确认 /// </summary> /// <returns></returns> public async Task <List <CameraRepairDto> > GetCameraRepairImageCheck() { var configuration = BuildConfiguration(); var dvrurl = configuration.GetSection("DVRInfourl:url").Value; var cameradata = await _camerarepository.GetListAsync(); var dvrdata = await _dVRrepository.GetListAsync(); var Repairdata = await _cameraRepairrepository.GetListAsync(); var cameraRepairdata = Repairdata.Where(u => u.RepairState == false); foreach (var item in cameraRepairdata) { var camera = cameradata.Where(u => u.Camera_ID == item.Camera_ID).FirstOrDefault(); if (camera != null) { var dvr = dvrdata.Where(u => u.DVR_ID == camera.DVR_ID).FirstOrDefault(); if (dvr != null) { // 获取设备截图并比对结果 string url2 = $"{dvrurl}/api/DVRClannel/GetChannelPicture?DVR_IP={dvr.DVR_IP}&DVR_Name={dvr.DVR_usre}&DVR_PassWord={dvr.DVR_possword}&ChannelID={camera.channel_ID}"; try { ImageHelp2 imageHelp = new ImageHelp2(); var handler2 = new HttpClientHandler(); var response2 = await _httpClient.GetStreamAsync(url2); Image image = Image.FromStream(response2); Image image2 = Image.FromFile(Path.Combine(AppContext.BaseDirectory, "yichang.jpg")); Bitmap bitmap1 = imageHelp.Resize(image); Bitmap bitmap2 = imageHelp.Resize(image2); var reqst = ImageHash.GetSimilarity(bitmap1, bitmap2, ImageHash.HashEnum.Difference); if (reqst > 0.9) { item.NoSignal = false; } else { item.NoSignal = true; } } catch (Exception) { item.NoSignal = null; } } } // var deletedata= _cameraRepairrepository.DeleteAsync(item); var repairrequst = await _cameraRepairrepository.UpdateAsync(item, true); } return(null); }
public async Task <string> GetAsync(string d, string df) { string Imgpath1 = $"D:\\{d}"; string Imgpath2 = $"D:\\{df}"; Image image1 = Image.FromFile(Imgpath1); Image image2 = Image.FromFile(Imgpath2); ImageHelp2 imageHelp = new ImageHelp2(); Bitmap bitmap1 = imageHelp.Resize(image1); Bitmap bitmap2 = imageHelp.Resize(image2); var reqst = ImageHash.GetSimilarity(bitmap1, bitmap2, ImageHash.HashEnum.Mean); // var reqst= imageHelp.GetSimilarity(bitmap1, bitmap2); return(reqst.ToString()); }
/// <summary> /// 定时任务,对比镜头数据 /// </summary> /// <returns></returns> public async Task <List <DVRChannelInfo> > GetDVRChannelInfo(string DVRRoom) { var configuration = BuildConfiguration(); var dvrurl = configuration.GetSection("DVRInfourl:url").Value; var dvrdata = _dVRrepository.Where(u => u.Monitoring_room == DVRRoom).ToList(); List <DVRCheckInfoDto> listdVRCheckInfo = new List <DVRCheckInfoDto>(); List <DVRChannelInfo> listdVRChannelInfo = new List <DVRChannelInfo>(); foreach (var item in dvrdata) { if (dvrdata != null) { string url = $"{dvrurl}/api/DVRInfo/Get?IP={item.DVR_IP}&name={item.DVR_usre}&password={item.DVR_possword}"; var handler = new HttpClientHandler();//{ AutomaticDecompression = DecompressionMethods.GZip }; var response = _httpClient.GetAsync(url).Result; var dt = response.Content.ReadAsStringAsync().Result; try { var data = Newtonsoft.Json.JsonConvert.DeserializeObject <DVRInfoDto>(dt); //检查通道信息 var cameraData = _camerarepository.Where(u => u.DVR_ID == item.DVR_ID); if (data != null) { //检查通道信息存储到数据库 foreach (var tem in data.Channelname) { DVRChannelInfo dVRChannelInfo = new DVRChannelInfo(); var channldata = cameraData.Where(u => u.channel_ID == tem.Number).FirstOrDefault(); dVRChannelInfo.DVRChannelName = tem.Name; dVRChannelInfo.channel_ID = tem.Number; if (channldata != null) { dVRChannelInfo.DVR_ID = channldata.DVR_ID; dVRChannelInfo.Camera_ID = channldata.Camera_ID; string dataName = $"{channldata.Camera_ID} {channldata.Build}-{channldata.floor} {channldata.Direction}{channldata.Location}"; dVRChannelInfo.DataChannelName = dataName; string DVRname = tem.Name.Replace(" ", ""); if (dataName.Replace(" ", "") == DVRname) { dVRChannelInfo.ChannelNameCheck = true; } else { dVRChannelInfo.ChannelNameCheck = false; } } else { dVRChannelInfo.DataChannelName = "无"; } // 获取设备截图并比对结果 string url2 = $"{dvrurl}/api/DVRClannel/GetChannelPicture?DVR_IP={item.DVR_IP}&DVR_Name={item.DVR_usre}&DVR_PassWord={item.DVR_possword}&ChannelID={tem.Number}"; try { ImageHelp2 imageHelp = new ImageHelp2(); var handler2 = new HttpClientHandler();//{ AutomaticDecompression = DecompressionMethods.GZip }; var response2 = await _httpClient.GetStreamAsync(url2); Image image = Image.FromStream(response2); Image image2 = Image.FromFile(Path.Combine(AppContext.BaseDirectory, "yichang.jpg")); Bitmap bitmap1 = imageHelp.Resize(image); Bitmap bitmap2 = imageHelp.Resize(image2); var reqst = ImageHash.GetSimilarity(bitmap1, bitmap2, ImageHash.HashEnum.Difference); if (reqst > 0.9) { dVRChannelInfo.ImageCheck = false; } else { dVRChannelInfo.ImageCheck = true; } } catch (Exception) { dVRChannelInfo.ImageCheck = null; } var requst = await _dVRChannelInforepository.FindAsync(u => u.DVRChannelName == tem.Name); dVRChannelInfo.LastUpdateTime = DateTime.Now.ToString(); if (requst == null) { var EE = await _dVRChannelInforepository.InsertAsync(dVRChannelInfo, true); listdVRChannelInfo.Add(EE); } else { var F = _dVRChannelInforepository.DeleteAsync(requst); var DD = await _dVRChannelInforepository.InsertAsync(dVRChannelInfo, true); listdVRChannelInfo.Add(DD); } } } } catch (Exception) { } } else { return(null); } } return(listdVRChannelInfo); }