/// <summary> /// Update the view of the binding values /// </summary> /// <param name="binding"></param> private QuadDetectorBindingInputFeatureValues ExtractBindingValues(ISkillBinding binding) { QuadDetectorBindingInputFeatureValues result = new QuadDetectorBindingInputFeatureValues(); result.SubMarginPercentage = (binding["SubRectangleMargin"].FeatureValue as SkillFeatureTensorIntValue).GetAsVectorView()[0]; result.MaxDetectedQuads = (binding["MaxDetectedQuads"].FeatureValue as SkillFeatureTensorIntValue).GetAsVectorView()[0]; result.NumberOfEdgePixels = (binding["NumberOfEdgePixels"].FeatureValue as SkillFeatureTensorIntValue).GetAsVectorView()[0]; var baseQuadFeature = binding["BaseQuad"].FeatureValue; var baseQuadFeatureValue = (baseQuadFeature as SkillFeatureTensorFloatValue).GetAsVectorView(); for (int i = 0; i < baseQuadFeatureValue.Count; i += 2) { result.BaseQuad[i / 2] = new Point(baseQuadFeatureValue[i], baseQuadFeatureValue[i + 1]); } result.UseCenterPoint = (binding["UseCenterPoint"].FeatureValue as SkillFeatureTensorBooleanValue).GetAsVectorView()[0]; var centerPointFeature = binding["CenterPoint"].FeatureValue; var centerPointTensor = (centerPointFeature as SkillFeatureTensorFloatValue).GetAsVectorView(); if (centerPointTensor.Count > 0) { result.CenterPointCoordinates.X = centerPointTensor[0]; result.CenterPointCoordinates.Y = centerPointTensor[1]; } return(result); }
/// <summary> /// Update displayed input values /// </summary> /// <param name="initialValues"></param> public void UpdateDisplayedInputValues(QuadDetectorBindingInputFeatureValues initialValues) { UIUseCenterPoint.IsChecked = initialValues.UseCenterPoint; if (initialValues.UseCenterPoint) { UpdateCenterPointDisplay( initialValues.CenterPointCoordinates.X, initialValues.CenterPointCoordinates.Y); } UILookupRegionCenterCropPercentage.Value = initialValues.SubMarginPercentage; UIMaxQuad.Value = initialValues.MaxDetectedQuads; UINumberOfPixelsPerEdge.Value = initialValues.NumberOfEdgePixels; UpdateBaseQuadCorners(initialValues.BaseQuad); }
/// <summary> /// QuadDetectorControl constructor /// </summary> /// <param name="binding"></param> public QuadDetectorControl(ISkillBinding binding) : base(binding) { // Update the view of the initial binding values m_quadDetectorBindingFeatureValues = ExtractBindingValues(binding); m_interactiveControl = new QuadDetectorSkillInteractiveControl(); m_imageGrid.Children.Add(m_canvas); m_image.SetValue(Canvas.ZIndexProperty, -1); m_image.SizeChanged += Image_SizeChanged; // Add SubRectangleMargin control foreach (var margin in m_margins) { m_canvas.Children.Add(margin); } m_interactiveControl.SubMargingValueChanged += QuadDetectorSkillInteractiveControl_SubMargingValueChanged; m_interactiveControl.MaxQuadValueChanged += QuadDetectorSkillInteractiveControl_MaxQuadValueChanged; m_interactiveControl.NumberOfPixelsPerEdgeValueChanged += QuadDetectorSkillInteractiveControl_NumberOfPixelsPerEdgeValueChanged; // Add Quad results control m_quadsResultRenderer = new QuadSetRenderer(ref m_canvas, 10); m_quadsResultRenderer.IsVisible = false; // Add BaseQuad control m_baseQuadRenderer = new InteractiveQuadRenderer(ref m_canvas); m_baseQuadRenderer.IsVisible = false; m_baseQuadRenderer.CornersChanged += InteractiveQuadRenderer_CornersChanged; m_baseQuadRenderer.CornersChangeCompleted += InteractiveQuadRenderer_CornersChangeCompleted; m_interactiveControl.SpecifyBaseQuadCheckedUnchecked += QuadDetectorSkillInteractiveControl_SpecifyBaseQuadCheckedUnchecked; // Add CenterPoint control m_centerPointControl.ManipulationDelta += QuadRendererCenterPoint_ManipulationDelta; m_centerPointControl.ManipulationCompleted += QuadRendererCenterPoint_ManipulationCompleted; Mouse.SetCursor(m_centerPointControl, Windows.UI.Core.CoreCursorType.Pin); m_canvas.Children.Add(m_centerPointControl); m_interactiveControl.CenterPointCheckedUnchecked += QuadDetectorSkillInteractiveControl_CenterPointCheckedUnchecked; Children.Add(m_interactiveControl); m_interactiveControl.UpdateDisplayedInputValues(m_quadDetectorBindingFeatureValues); }