Пример #1
0
        /// <summary>
        /// get all pixels data about the image and width and height too
        /// </summary>
        /// <param name="Path"> where the image is stored</param>
        /// <returns>return ImageDataModel</returns>
        public async Task ProcessImage()
        {
            await Task.Run(() =>
            {
                using (Bitmap bmp = new Bitmap(_image))
                {
                    var width  = bmp.Width - 1;
                    var height = bmp.Height - 1;
                    var pixels = new List <List <Color> >();

                    for (var j = 0; j < height; j++)
                    {
                        var linesOfPixels = new List <Color>();
                        for (var i = 0; i < width; i++)
                        {
                            Color clr = bmp.GetPixel(i, j);
                            linesOfPixels.Add(clr);
                        }
                        pixels.Add(linesOfPixels);
                    }
                    _processData = new ImageDataModel()
                    {
                        Data   = pixels,
                        Height = height + 1,
                        Width  = width + 1
                    };
                }
            });
        }
Пример #2
0
        public static void CheckResult(ImageDataModel PreModel, ImageDataModel NowModel)
        {
            ResultData = new List <string> {
                $"{NowModel.ID}"
            };
            stateCount += check(PreModel.KeyPointList, NowModel.KeyPointList);
            stateCount += check2(PreModel.KeyPointList, NowModel.KeyPointList);
            stateCount += check3(NowModel.KeyPointList);
            stateCount += check4(PreModel.KeyPointList, NowModel.KeyPointList);
            stateCount += check5(NowModel.KeyPointList);

            SubStatusCount += SubCheck(NowModel.KeyPointList);
            SubStatusCount += SubCheck2(PreModel.KeyPointList, NowModel.KeyPointList);
            SubStatusCount += SubCheck3(NowModel.KeyPointList);
            ResultData.Add("StatusCount=" + stateCount);
            ResultData.Add("SubStatusCount=" + SubStatusCount);
            if (SubStatusCount >= 100)
            {
                ResultData.Add("IsTired=Y");
                ResetStatus();
            }
            else
            {
                ResultData.Add("IsTired=N");
            }
            if (stateCount >= 100)
            {
                Console.WriteLine("醒醒!!");
            }
            ResultData.Add(NowModel.Date.ToString());
            Task t = MQTTPublishResult(ResultData);
        }
Пример #3
0
        public async Task <IHttpActionResult> GetRunwayChecklistDetails(ImageDataModel model)
        {
            foreach (var item in model.imagepara)
            {
                var data = await Task.Run(() => Entities.SP_InsertRunwayImageDetails(model.date, model.Time, Convert.ToInt32(item.id), item.filename));
            }

            return(null);
        }
Пример #4
0
        /// <summary>
        /// ID為檔案編號,file為檔案完整路徑(包含檔案名稱)
        /// </summary>
        public static ImageDataModel GetImageData(string ID, string file, bool IsNow = false)
        {
            string json   = File.ReadAllText(file, new System.Text.UTF8Encoding());
            var    Object = System.Text.Json.JsonSerializer.Deserialize <OpenPoseModel>(json);

            if (Object.people.Count() == 0)
            {
                Console.WriteLine($"ID:{ID}:無效的json檔");
                return(new ImageDataModel()
                {
                    ID = ID, Date = DateTime.Now
                });
            }
            List <KeyPointModel> List = new List <KeyPointModel>();

            for (var i = 0; i < 75; i = i + 3)
            {
                List.Add(new KeyPointModel
                {
                    x          = Object.people[0].pose_keypoints_2d[i],
                    y          = Object.people[0].pose_keypoints_2d[i + 1],
                    Confidence = Object.people[0].pose_keypoints_2d[i + 2]
                });
            }

            foreach (var item in List)
            {
                if (item.Confidence > 0)
                {
                    //Console.WriteLine($"{(List.IndexOf(item)).ToString("D2")}:x={item.x.ToString("F3")},y={item.y.ToString("F3")},置信度={item.Confidence.ToString("P")}");
                }
            }
            ImageDataModel model = new ImageDataModel
            {
                ID           = ID,
                Date         = DateTime.Now,
                KeyPointList = List
            };

            if (IsNow)
            {
                Console.WriteLine($"ID:{ID}");
                List <string> msg = new List <string>
                {
                    $"{model.ID}", $"zeroX={List[0].x}", $"zeroY={List[0].y}", $"oneX={List[1].x}", $"oneY={List[1].y}", $"twoX={List[2].x}", $"twoY={List[2].y}", $"threeX={List[3].x}", $"threeY={List[3].y}",
                    $"fourX={List[4].x}", $"fourY={List[4].y}", $"fiveX={List[5].x}", $"fiveY={List[5].y}", $"sixX={List[6].x}", $"sixY={List[6].y}",
                    $"sevenX={List[7].x}", $"sevenY={List[7].y}", $"eightX={List[8].x}", $"eightY={List[8].y}",
                    $"fifteenX={List[15].x}", $"fifteenY={List[15].y}", $"sixteenX={List[16].x}", $"sixteenY={List[16].y}"
                    , $"seventeenX={List[17].x}", $"seventeenY={List[17].y}", $"eighteenX={List[18].x}", $"eighteenY={List[18].y}", model.Date.ToString()
                };
                Task t = MQTTPublishData(msg);
            }
            return(model);
        }
Пример #5
0
         public void ProcessRequest(HttpContext context)
         {
 
                 if(!string.IsNullOrEmpty(context.Request.QueryString["ImageId"])){
                 try
                 {
                     string ImageId = context.Request.QueryString["ImageId"].ToString(); 
                     ImageDataModel idm = new ImageDataModel();
                     byte[] ImageData = idm.getImageData(ImageId);
 
                     context.Response.ContentType = "image/JPEG";
                     context.Response.OutputStream.Write(ImageData, 0, ImageData.Length); 
 
 
                 }
Пример #6
0
        public async Task <ImageDataModel> Post()
        {
            string result = await Request.Content.ReadAsStringAsync();

            ImageDataModel idm = new ImageDataModel();

            dynamic jobj = JsonConvert.DeserializeObject(result);

            string imgCode = jobj.code;
            int    hid     = jobj.hid;

            idm.response = idm.RecognizeImage(imgCode);
            //idm = idm.CheckWiki(idm.response);

            idm.ImageStatistics(idm.response, hid);

            return(idm);
        }
Пример #7
0
        public static void SendImage(string filename, ImageDataModel model)
        {
            filename = filename.Replace("keypoints.json", "rendered.png");
            client.DefaultRequestHeaders.Clear();
            //client.BaseAddress = new Uri(@"");
            client.DefaultRequestHeaders.Add("CK", "DKC395PCYXM9EPZ4XS");
            List <string> value = new List <string>
            {
                model.ID, model.Date.ToString()
            };
            string json = JsonConvert.SerializeObject(new { id = "Car_Image", value = value });
            // 將轉為 string 的 json 依編碼並指定 content type 存為 httpcontent
            HttpContent meta = new StringContent(json, Encoding.UTF8, "application/json");

            byte[] image      = File.ReadAllBytes(filename);
            var    fileStream = new StreamContent(new MemoryStream(image));

            fileStream.Headers.Add("Content-Type", "image/jpeg");
            var content = new MultipartFormDataContent();

            content.Add(meta, "meta");
            content.Add(fileStream, "img", "test.png");
            client.PostAsync(@"https://iot.cht.com.tw/iot/v1/device/24986291524/snapshot", content);
        }
Пример #8
0
 public string GetImg(ImageDataModel img)
 {
     return(String.Format("~/wwwroot/frames/{0}/{1}_{2}.png", img.Id, img.Id, img.Second));
 }
Пример #9
0
 private void AddOrUpdate(ImageDataModel entity)
 {
     _context.Set <ImageDataModel>().AddOrUpdate(entity);
 }
Пример #10
0
 public void Add(ImageDataModel entity)
 {
     AddOrUpdate(entity);
 }