Some bug fixes.
This commit is contained in:
parent
852ffd7cb0
commit
97ef5087e3
3 changed files with 26 additions and 17 deletions
|
@ -136,7 +136,7 @@ namespace OpenFaceOffline
|
||||||
public bool DynamicAUModels { get; set; } = true;
|
public bool DynamicAUModels { get; set; } = true;
|
||||||
|
|
||||||
// Camera calibration parameters
|
// Camera calibration parameters
|
||||||
public double fx = -1, fy = -1, cx = -1, cy = -1;
|
public float fx = -1, fy = -1, cx = -1, cy = -1;
|
||||||
bool estimate_camera_parameters = true;
|
bool estimate_camera_parameters = true;
|
||||||
|
|
||||||
public MainWindow()
|
public MainWindow()
|
||||||
|
@ -343,10 +343,10 @@ namespace OpenFaceOffline
|
||||||
// If the camera calibration parameters are not set (indicated by -1), guesstimate them
|
// If the camera calibration parameters are not set (indicated by -1), guesstimate them
|
||||||
if(estimate_camera_parameters || fx == -1 || fy == -1 || cx == -1 || cy == -1)
|
if(estimate_camera_parameters || fx == -1 || fy == -1 || cx == -1 || cy == -1)
|
||||||
{
|
{
|
||||||
fx = 500.0 * (capture.width / 640.0);
|
fx = 500.0f * (capture.width / 640.0f);
|
||||||
fy = 500.0 * (capture.height / 480.0);
|
fy = 500.0f * (capture.height / 480.0f);
|
||||||
|
|
||||||
fx = (fx + fy) / 2.0;
|
fx = (fx + fy) / 2.0f;
|
||||||
fy = fx;
|
fy = fx;
|
||||||
|
|
||||||
cx = capture.width / 2f;
|
cx = capture.width / 2f;
|
||||||
|
@ -472,7 +472,7 @@ namespace OpenFaceOffline
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void VisualizeFeatures(RawImage frame, Visualizer visualizer, List<Tuple<double, double>> landmarks, bool new_image, double fx, double fy, double cx, double cy, double progress)
|
private void VisualizeFeatures(RawImage frame, Visualizer visualizer, List<Tuple<double, double>> landmarks, bool new_image, float fx, float fy, float cx, float cy, double progress)
|
||||||
{
|
{
|
||||||
|
|
||||||
List<Tuple<Point, Point>> lines = null;
|
List<Tuple<Point, Point>> lines = null;
|
||||||
|
@ -494,6 +494,10 @@ namespace OpenFaceOffline
|
||||||
double scale = 0;
|
double scale = 0;
|
||||||
|
|
||||||
// Helps with recording and showing the visualizations
|
// Helps with recording and showing the visualizations
|
||||||
|
if(new_image)
|
||||||
|
{
|
||||||
|
visualizer.SetImage(frame, fx, fy, cx, cy);
|
||||||
|
}
|
||||||
visualizer.SetObservationHOG(face_analyser.GetLatestHOGFeature(), face_analyser.GetHOGRows(), face_analyser.GetHOGCols());
|
visualizer.SetObservationHOG(face_analyser.GetLatestHOGFeature(), face_analyser.GetHOGRows(), face_analyser.GetHOGCols());
|
||||||
visualizer.SetObservationLandmarks(landmarks, confidence); // Set confidence to high to make sure we always visualize
|
visualizer.SetObservationLandmarks(landmarks, confidence); // Set confidence to high to make sure we always visualize
|
||||||
visualizer.SetObservationPose(pose, confidence);
|
visualizer.SetObservationPose(pose, confidence);
|
||||||
|
@ -503,11 +507,11 @@ namespace OpenFaceOffline
|
||||||
{
|
{
|
||||||
|
|
||||||
eye_landmarks = clnf_model.CalculateVisibleEyeLandmarks();
|
eye_landmarks = clnf_model.CalculateVisibleEyeLandmarks();
|
||||||
lines = clnf_model.CalculateBox((float)fx, (float)fy, (float)cx, (float)cy);
|
lines = clnf_model.CalculateBox(fx, fy, cx, cy);
|
||||||
|
|
||||||
scale = clnf_model.GetRigidParams()[0];
|
scale = clnf_model.GetRigidParams()[0];
|
||||||
|
|
||||||
gaze_lines = gaze_analyser.CalculateGazeLines(scale, (float)fx, (float)fy, (float)cx, (float)cy);
|
gaze_lines = gaze_analyser.CalculateGazeLines(scale, fx, fy, cx, cy);
|
||||||
gaze_angle = gaze_analyser.GetGazeAngle();
|
gaze_angle = gaze_analyser.GetGazeAngle();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -78,7 +78,7 @@ namespace OpenFaceOffline
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class CameraParametersEntry : Window
|
public partial class CameraParametersEntry : Window
|
||||||
{
|
{
|
||||||
public CameraParametersEntry(double fx, double fy, double cx, double cy)
|
public CameraParametersEntry(float fx, float fy, float cx, float cy)
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
this.KeyDown += new KeyEventHandler(TextEntry_KeyDown);
|
this.KeyDown += new KeyEventHandler(TextEntry_KeyDown);
|
||||||
|
@ -122,26 +122,26 @@ namespace OpenFaceOffline
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private double fx = -1, fy = -1, cx = -1, cy = -1;
|
private float fx = -1, fy = -1, cx = -1, cy = -1;
|
||||||
|
|
||||||
public bool IsAutomatic
|
public bool IsAutomatic
|
||||||
{
|
{
|
||||||
get { return automaticCheckBox.IsChecked == true; }
|
get { return automaticCheckBox.IsChecked == true; }
|
||||||
}
|
}
|
||||||
public double Fx
|
public float Fx
|
||||||
{
|
{
|
||||||
get { return automaticCheckBox.IsChecked == true ? -1 : fx; }
|
get { return automaticCheckBox.IsChecked == true ? -1 : fx; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public double Fy
|
public float Fy
|
||||||
{
|
{
|
||||||
get { return automaticCheckBox.IsChecked == true ? -1 : fy; }
|
get { return automaticCheckBox.IsChecked == true ? -1 : fy; }
|
||||||
}
|
}
|
||||||
public double Cx
|
public float Cx
|
||||||
{
|
{
|
||||||
get { return automaticCheckBox.IsChecked == true ? -1 : cx; }
|
get { return automaticCheckBox.IsChecked == true ? -1 : cx; }
|
||||||
}
|
}
|
||||||
public double Cy
|
public float Cy
|
||||||
{
|
{
|
||||||
get { return automaticCheckBox.IsChecked == true ? -1 : cy; }
|
get { return automaticCheckBox.IsChecked == true ? -1 : cy; }
|
||||||
}
|
}
|
||||||
|
@ -169,10 +169,10 @@ namespace OpenFaceOffline
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
double fx_n = Double.Parse(fxTextBox.Text);
|
float fx_n = (float)Double.Parse(fxTextBox.Text);
|
||||||
double fy_n = Double.Parse(fyTextBox.Text);
|
float fy_n = (float)Double.Parse(fyTextBox.Text);
|
||||||
double cx_n = Double.Parse(cxTextBox.Text);
|
float cx_n = (float)Double.Parse(cxTextBox.Text);
|
||||||
double cy_n = Double.Parse(cyTextBox.Text);
|
float cy_n = (float)Double.Parse(cyTextBox.Text);
|
||||||
|
|
||||||
if (fx_n > 0 && fy_n > 0 && cx_n > 0 && cy_n > 0)
|
if (fx_n > 0 && fy_n > 0 && cx_n > 0 && cy_n > 0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -113,6 +113,11 @@ namespace UtilitiesOF {
|
||||||
m_visualizer->SetObservationLandmarks(landmarks_2D_mat, confidence);
|
m_visualizer->SetObservationLandmarks(landmarks_2D_mat, confidence);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SetImage(OpenCVWrappers::RawImage^ canvas, float fx, float fy, float cx, float cy)
|
||||||
|
{
|
||||||
|
m_visualizer->SetImage(canvas->Mat, fx, fy, cx, cy);
|
||||||
|
}
|
||||||
|
|
||||||
OpenCVWrappers::RawImage^ GetHOGVis()
|
OpenCVWrappers::RawImage^ GetHOGVis()
|
||||||
{
|
{
|
||||||
OpenCVWrappers::RawImage^ hog_image = gcnew OpenCVWrappers::RawImage(m_visualizer->GetHOGVis());
|
OpenCVWrappers::RawImage^ hog_image = gcnew OpenCVWrappers::RawImage(m_visualizer->GetHOGVis());
|
||||||
|
|
Loading…
Reference in a new issue