More work on the GUI

This commit is contained in:
Tadas Baltrusaitis 2018-01-13 16:34:03 +00:00
parent 2e9f75e0ad
commit 408d695f39
2 changed files with 9 additions and 48 deletions

View file

@ -261,7 +261,11 @@ namespace OpenFaceOffline
// Initialize the face analyser // Initialize the face analyser
face_analyser = new FaceAnalyserManaged(AppDomain.CurrentDomain.BaseDirectory, DynamicAUModels, image_output_size); face_analyser = new FaceAnalyserManaged(AppDomain.CurrentDomain.BaseDirectory, DynamicAUModels, image_output_size);
// Loading an image file (or a number of them) // Loading an image file
var frame = new RawImage(reader.GetNextImage());
var grayFrame = new RawImage(reader.GetCurrentFrameGray());
// This will be false when the image is not available
while (reader.isOpened()) while (reader.isOpened())
{ {
if (!thread_running) if (!thread_running)
@ -269,14 +273,8 @@ namespace OpenFaceOffline
continue; continue;
} }
// Start the actual processing, TODO this should change?
Thread.CurrentThread.IsBackground = true;
clnf_model.Reset(); clnf_model.Reset();
var frame = new RawImage(reader.GetNextImage());
var grayFrame = new RawImage(reader.GetCurrentFrameGray());
double progress = reader.GetProgress(); double progress = reader.GetProgress();
// Detect faces here and return bounding boxes // Detect faces here and return bounding boxes
@ -284,9 +282,6 @@ namespace OpenFaceOffline
List<double> confidences = new List<double>(); List<double> confidences = new List<double>();
face_detector.DetectFacesHOG(face_detections, grayFrame, confidences); face_detector.DetectFacesHOG(face_detections, grayFrame, confidences);
// For visualizing landmarks, TODO rem
List<Point> landmark_points = new List<Point>();
for (int i = 0; i < face_detections.Count; ++i) for (int i = 0; i < face_detections.Count; ++i)
{ {
detectionSucceeding = clnf_model.DetectFaceLandmarksInImage(grayFrame, face_detections[i], face_model_params); detectionSucceeding = clnf_model.DetectFaceLandmarksInImage(grayFrame, face_detections[i], face_model_params);
@ -302,44 +297,12 @@ namespace OpenFaceOffline
// Only the final face will contain the details // Only the final face will contain the details
VisualizeFeatures(frame, landmarks, reader.GetFx(), reader.GetFy(), reader.GetCx(), reader.GetCy(), progress); VisualizeFeatures(frame, landmarks, reader.GetFx(), reader.GetFy(), reader.GetCx(), reader.GetCy(), progress);
// TODO rem
//foreach (var p in landmarks)
//{
// landmark_points.Add(new Point(p.Item1, p.Item2));
//}
} }
// Visualisation TODO this should be lifted out? and actually be grabbed from the visualizer? rather than drawing points ourselves? latest_img = null;
//if (ShowTrackedVideo)
//{
// Dispatcher.Invoke(DispatcherPriority.Render, new TimeSpan(0, 0, 0, 0, 200), (Action)(() =>
// {
// if (latest_img == null)
// {
// latest_img = frame.CreateWriteableBitmap();
// }
// frame.UpdateWriteableBitmap(latest_img);
// video.Source = latest_img;
// video.Confidence = 1;
// video.FPS = processing_fps.GetFPS();
// video.Progress = progress;
// video.OverlayLines = new List<Tuple<Point, Point>>();
// video.OverlayPoints = landmark_points;
// // TODO unify with other visualization
// }));
//}
// TODO is this needed
//latest_img = null;
frame = new RawImage(reader.GetNextImage());
grayFrame = new RawImage(reader.GetCurrentFrameGray());
// TODO how to report errors from the reader here? exceptions? logging? Problem for future versions? // TODO how to report errors from the reader here? exceptions? logging? Problem for future versions?
} }

View file

@ -141,9 +141,7 @@ namespace OpenFaceOffline
// Update the bars // Update the bars
foreach (var value in data) foreach (var value in data)
{ {
double old_value = graphs[value.Key].GetTarget(); graphs[value.Key].SetValue(value.Value);
// some smoothing as well
graphs[value.Key].SetValue(old_value * 0.15 + 0.85 * value.Value);
} }
} }
} }