public void SetLimitsToTrackBar() { foreach (DataStream dataStream in project.DataStreams) { if (dataStream is ImageDataStream) { ImageDataStream imageDataStream = dataStream as ImageDataStream; if ((imageDataStream.StartTime != DateTime.MaxValue) && (imageDataStream.EndTime != DateTime.MaxValue)) { if (imageDataStream.StartTime < minTime) { minTime = imageDataStream.StartTime; } if (imageDataStream.EndTime > maxTime) { maxTime = imageDataStream.EndTime; } } } } double totalSecs = (new TimeSpan(maxTime.Ticks - minTime.Ticks)).TotalSeconds; trackBar.Minimum = 0; trackBar.Maximum = Convert.ToInt32(totalSecs / timeResolution); timer.Interval = Convert.ToInt32(timeResolution * 1000.0); CurrentTime = minTime; }
public static void Create(Project project, ILogger logger, CancellationToken cancelletionToken = default(CancellationToken)) { logger.WriteLineInfo("----------------------------------"); logger.WriteLineInfo(" CAR METADATA file v0.1"); logger.WriteLineInfo(" The Ohio State University, 2017"); logger.WriteLineInfo("----------------------------------"); logger.WriteLineInfo(" "); logger.WriteLineInfo(" "); int pi = 0; foreach (DataStream dataStream in project.DataStreams) { pi++; cancelletionToken.ThrowIfCancellationRequested(); logger.WriteProgress((double)pi / (double)project.DataStreams.Count() * 100.0); dataStream.WriteMetadata(logger); } PrintSummary(project, logger); logger.WriteLineInfo(" "); logger.WriteLineInfo("Checking: "); // Checking Nikon's Novatel MARKTIMEA ImageDataStream nikonDataStream = (ImageDataStream)project.GetDataStreamByShortName("NIKON"); NovatelDataStream novatelDataStream = (NovatelDataStream)project.GetDataStreamByShortName("NOVATEL"); CheckEvents(nikonDataStream, novatelDataStream, EvenMarkerDataLine.MarkerEventPort.Unknown, logger); /*if ((nikonDataStream != null) && (novatelDataStream != null)) * { * if (nikonDataStream.NumOfFiles != novatelDataStream.MarkerEvents.Count()) * { * logger.WriteLineInfo("WRONG -- Number of #MARKTIME events from the Novatel ASC and the number of Nikon images are different!"); * logger.WriteLineWarning("Number of #MARKTIME events from the Novatel ASC and the number of Nikon images are different!"); * } * else * { * logger.WriteLineInfo("OK -- Number of #MARKTIME events from the Novatel ASC and the number of Nikon images !"); * } * }*/ // Checking Sony's Septentrio MARKTIME ImageDataStream son1DataStream = (ImageDataStream)project.GetDataStreamByShortName("SON1"); ImageDataStream son2DataStream = (ImageDataStream)project.GetDataStreamByShortName("SON2"); GPSDataStream septDataStream = (GPSDataStream)project.GetDataStreamByShortName("SEPT"); CheckEvents(son1DataStream, septDataStream, EvenMarkerDataLine.MarkerEventPort.EventA, logger); CheckEvents(son2DataStream, septDataStream, EvenMarkerDataLine.MarkerEventPort.EventB, logger); logger.Flush(); }
private void dataStreamList_DoubleClick(object sender, EventArgs e) { DataStream dataStream = (DataStream)dataStreamList.SelectedItem; if (dataStream.DataLines.Count == 0) { Logger.WriteLineWarning("No file for " + dataStream.ShortName); MessageBox.Show("No file for " + dataStream.ShortName, "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (dataStreamList.SelectedItem is VideoDataStream) { VideoDataStream videoDataStream = dataStreamList.SelectedItem as VideoDataStream; VideoStreamWnd wnd = new VideoStreamWnd(videoDataStream, Logger); wnd.MdiParent = this.MdiParent; wnd.Show(); } else if (dataStreamList.SelectedItem is ImageDataStream) { ImageDataStream imageDataStream = dataStreamList.SelectedItem as ImageDataStream; ImageStreamWnd wnd = new ImageStreamWnd(imageDataStream, Logger); wnd.MdiParent = this.MdiParent; wnd.Show(); } else if (dataStreamList.SelectedItem is VelodyneDataStream) { VelodyneDataStream velodyneDataStream = dataStreamList.SelectedItem as VelodyneDataStream; if (velodyneDataStream.HasIndexedFiles() == false) { DialogResult result = MessageBox.Show("No index file for " + dataStream.ShortName + "! Do you want to create index file?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (result == DialogResult.No) { return; } ConvertVelodyneDataStream(velodyneDataStream); } else { VelodyneStreamWnd wnd = new VelodyneStreamWnd(velodyneDataStream, Logger); wnd.MdiParent = this.MdiParent; wnd.Show(); } } else if (dataStreamList.SelectedItem is GPSDataStream) { GPSDataStream gpsDataStream = dataStreamList.SelectedItem as GPSDataStream; GPSDataStreamWnd wnd = new GPSDataStreamWnd(gpsDataStream, Logger); wnd.MdiParent = this.MdiParent; wnd.Show(); } }
public ImageStreamWnd(ImageDataStream dataStream, ILogger logger) { InitializeComponent(); this.dataStream = dataStream; this.logger = logger; timer.Interval = 500; trackBar.Minimum = 0; trackBar.Maximum = Convert.ToInt32(dataStream.DataLines.Count()); this.HasToSetFrame = true; this.Text = "Image Stream: " + dataStream.ShortName; this.windowState = StreamWindowState.Normal; }
public static void CheckEvents(ImageDataStream imgDataStream, GPSDataStream gpsDataStream, EvenMarkerDataLine.MarkerEventPort port, ILogger logger) { if ((imgDataStream != null) && (gpsDataStream != null)) { if (imgDataStream.DataLines.Count() == 0) { return; } DateTime startTime = imgDataStream.StartTime - TimeSpan.FromMinutes(5); DateTime endTime = imgDataStream.EndTime + TimeSpan.FromMinutes(5); int numMarkers = 0; // check events and image numbers foreach (EvenMarkerDataLine evnt in gpsDataStream.MarkerEvents) { if ((startTime <= evnt.TimeStamp) && (evnt.TimeStamp <= endTime) && (evnt.Port == port)) { numMarkers++; } } if (imgDataStream.NumOfData != numMarkers) { logger.WriteLineWarning("Number of events from the " + gpsDataStream.ShortName + " and the number of " + imgDataStream.ShortName + " images are different!"); logger.WriteLineWarning("Number of images: " + imgDataStream.NumOfData); logger.WriteLineWarning("Number of markers: " + numMarkers); } else { logger.WriteLineInfo("OK -- Number of events from the " + gpsDataStream.ShortName + " and the number of " + imgDataStream.ShortName + " images are same"); logger.WriteLineInfo("Number of images: " + imgDataStream.NumOfData); logger.WriteLineInfo("Number of markers: " + numMarkers); } } }
public ImageFeature(ImageDataStream dataStream) : this() { this.DataStream = dataStream; }
private void updateFileTimesToolStripMenuItem_Click(object sender, EventArgs e) { List <ILogger> loggers = new List <ILogger>(); loggers.Add(ConsoleLogger); MainForm form = (MainForm)this.MdiParent; ProgressBarWnd wnd = new ProgressBarWnd(); wnd.Text = "Updating file times..."; loggers.Add(wnd); MultipleLogger logger = new MultipleLogger(loggers); wnd.WriteLine("Start updating file times: " + projectFolder); toolStripProgressBar.Visible = true; wnd.Worker.DoWork += delegate(object senderWorker, DoWorkEventArgs eWorker) { try { int k = 0; foreach (DataStream stream in Project.DataStreams) { wnd.CancelTokenSource.Token.ThrowIfCancellationRequested(); logger.WriteProgress((++k / (double)Project.DataStreams.Count()) * 100.0); if (stream is ImageDataStream) { logger.WriteLineInfo("Image data stream: " + stream.ShortName); ImageDataStream imageDataStream = stream as ImageDataStream; imageDataStream.UpdateFileTimes(); } if (stream is VideoDataStream) { logger.WriteLineInfo("Image data stream: " + stream.ShortName); VideoDataStream videoDataStream = stream as VideoDataStream; videoDataStream.UpdateFileTimes(); } } } catch (OperationCanceledException) { logger.WriteLineWarning("User cancelled!"); return; } catch (Exception ex) { logger.WriteLineError("Error occured: " + ex.Message); } logger.WriteLineInfo("done."); }; wnd.Worker.RunWorkerCompleted += delegate(object senderWorker, RunWorkerCompletedEventArgs eWorker) { toolStripProgressBar.Visible = false; }; wnd.ShowDialog(); }