public List <SPositionObjetDansImage> positionnerObjetsDansImage(NDArray[] resultArr) { if (resultArr == null || resultArr.Length == 0) { return(null); } PbtxtItems pbTxtItems = PbtxtParser.ParsePbtxtFile(labelFile); List <SPositionObjetDansImage> lPositionObjetDansImages = new List <SPositionObjetDansImage>(); SPositionObjetDansImage sPositionObjetDansImage = new SPositionObjetDansImage(); float[] scores = resultArr[2].Data <float>(); for (int i = 0; i < scores.Length; i++) { float score = scores[i]; if (score > MIN_SCORE) { float[] boxes = resultArr[1].Data <float>(); float top = boxes[i * 4] * this.bitmapOutput.Height; float left = boxes[i * 4 + 1] * this.bitmapOutput.Width; float bottom = boxes[i * 4 + 2] * this.bitmapOutput.Height; float right = boxes[i * 4 + 3] * this.bitmapOutput.Width; Rectangle rect = new Rectangle() { X = (int)left, Y = (int)top, Width = (int)(right - left), Height = (int)(bottom - top) }; //Définition du centre de l'objet détecté rect.X = rect.X + (rect.Width / 2); rect.Y = rect.Y + (rect.Height / 2); rect.Width = 1; rect.Height = 1; float[] ids = resultArr[3].Data <float>(); string name = pbTxtItems.items.Where(w => w.id == (int)ids[i]).Select(s => s.display_name).FirstOrDefault(); //Stockage des valeurs: nom, positionX et positionY de l'objet (les positions sont en pixel) sPositionObjetDansImage.libelle = name; sPositionObjetDansImage.position.x = rect.X; sPositionObjetDansImage.position.y = rect.Y; lPositionObjetDansImages.Add(sPositionObjetDansImage); } } return(lPositionObjetDansImages); }
public float CalculerAngleElevationObjet(SPositionObjetDansImage objet, int angleTotaleElevation) { float elevationObjet = (float)((this.getHauteurImage() - objet.position.y) * angleTotaleElevation) / (float)this.getHauteurImage(); return(elevationObjet); }
public float CalculerAngleAzimutObjet(SPositionObjetDansImage objet, int angleTotaleAzimut) { float azimutObjet = ((float)objet.position.x * angleTotaleAzimut) / (float)this.getLargeurImage(); return(azimutObjet); }