Beispiel #1
0
 public TimeFeature(DataStream stream, ImageDataLine dataLine, HotFrame hotFrame)
 {
     this.DataStream   = stream;
     this.OriginalTime = dataLine.TimeStamp;
     this.FileTime     = dataLine.TimeStamp;
     this.FileName     = dataLine.ImageFileName;
     this.GlobalTime   = hotFrame.Timestamp;
 }
Beispiel #2
0
        public void SetFrame(int frame)
        {
            CurrentHotFrame = null;

            if ((frame >= 0) && (frame < dataStream.DataLines.Count()))
            {
                if (frame != currentFrame)
                {
                    if (frameBox.Image != null)
                    {
                        frameBox.Image.Dispose();
                    }
                    ImageDataLine dataLine = (ImageDataLine)dataStream.DataLines[frame];
                    String        fileName = dataLine.ImageFileName;

                    if (Path.GetExtension(fileName) == ".yuv")
                    {
                        frameBox.Image = YUVConverter.Convert(project.Folder + "\\" + dataStream.SubFolder + "\\" + fileName, logger);
                    }
                    else
                    {
                        frameBox.Image = Image.FromFile(project.Folder + "\\" + dataStream.SubFolder + "\\" + fileName);
                    }

                    frameBox.ZoomToFit();
                    frameBox.Refresh();
                    currentFrame = frame;

                    //some UI stuff
                    lblStatus.Text = dataLine.TimeType.ToString() + " " + dataLine.TimeStamp.ToString("yyyy-MM-dd HH:mm:ss.fff") + " #: " + currentFrame;
                    trackBar.Value = currentFrame;
                }
            }
            else
            {
                frameBox.Image = null;
                if (frame < 0)
                {
                    currentFrame   = 0;
                    trackBar.Value = 0;
                }
                else if (frame > dataStream.DataLines.Count())
                {
                    currentFrame   = dataStream.DataLines.Count() - 1;
                    trackBar.Value = trackBar.Maximum;
                }

                //some UI stuff
                toolStripStatus.Text = "Outside of the stream time limits.";
            }
        }
Beispiel #3
0
        private async Task SyncSept(String fileName)
        {
            using (StreamReader reader = File.OpenText(fileName))
            {
                reader.ReadLine();
                int           num_dates = 0;
                int           num_lines = 0;
                List <double> dts       = new List <double>();

                while (!reader.EndOfStream)
                {
                    num_lines++;
                    string[]      elems     = reader.ReadLine().Split(',');
                    String        imageName = elems[0];
                    ImageDataLine dataLine  = (ImageDataLine)dataStream.DataLines.Find(x => ((ImageDataLine)x).ImageFileName == imageName);
                    if (dataLine == null)
                    {
                        continue;
                    }

                    DateTime dateTime = new DateTime(Convert.ToInt32(elems[1]), Convert.ToInt32(elems[2]), Convert.ToInt32(elems[3]),
                                                     Convert.ToInt32(elems[4]), Convert.ToInt32(elems[5]), 0);
                    dateTime = dateTime.AddSeconds(Convert.ToDouble(elems[6]));

                    dts.Add(Math.Abs((new TimeSpan(dataLine.TimeStamp.Ticks - dateTime.Ticks)).TotalSeconds));

                    dataLine.TimeStamp = dateTime;
                    dataLine.TimeType  = TimeType.GPS;
                    num_dates++;

                    logger.WriteProgress((double)reader.BaseStream.Position / (double)reader.BaseStream.Length * 100);
                }

                this.dataStream.OrderDataLines();
                logger.WriteLineInfo("Number of updated items: " + num_dates + " out of " + dataStream.DataLines.Count());
                logger.WriteLineInfo("Number of items in the file: " + num_lines);
                logger.WriteLineInfo("Average dT [s]= " + dts.Average());
                logger.WriteLineInfo("Maximum dT [s]= " + dts.Max());
                logger.WriteLineInfo("Minimum dT [s]= " + dts.Min());
            }
        }