コード例 #1
0
        private void TestBtn_Click(object sender, EventArgs e)
        {
            if (testAlignmentPipeline.Count <= 0)
            {
                return;
            }

            List <AlignmentPipelineResults.AlignmentMethodResult> alignmentMethodResults = new List <AlignmentPipelineResults.AlignmentMethodResult>();

            IOutputArray outputImageArr;

            outputImage = testImage;
            CvInvoke.Resize(testImage, outputImage, templateImage.Size);
            //outputImage = testImage.Resize(templateImage.Width, templateImage.Height, Emgu.CV.CvEnum.Inter.Cubic);
            for (int i = 0; i < testAlignmentPipeline.Count; i++)
            {
                Exception exception = null;

                AlignmentPipelineResults.AlignmentMethodResult alignmentMethodResult = null;
                AlignmentMethod alignmentMethod = testAlignmentPipeline[i];

                if (alignmentMethod.PipelineIndex == -1 || ommittedAlignmetMethodIndeces.Contains(alignmentMethod.PipelineIndex))
                {
                    continue;
                }

                if (alignmentMethod.GetAlignmentMethodType == AlignmentMethodType.Anchors)
                {
                    var  aIM         = (AnchorAlignmentMethod)alignmentMethod;
                    bool isSuccess   = aIM.ApplyMethod(outputImage, out outputImageArr, out RectangleF[] detectedAnchors, out RectangleF[] warpedAnchors, out RectangleF[] scaledMainAnchorRegions, out RectangleF scaledMainTestRegion, out Mat homography, out long alignmentTime, out exception);
コード例 #2
0
        private void ConfigureMethod(AlignmentMethod alignmentMethod)
        {
            switch (alignmentMethod.GetAlignmentMethodType)
            {
            case AlignmentMethodType.Anchors:
                AnchorAlignmentMethodForm anchorAlignmentMethodTool = new AnchorAlignmentMethodForm((AnchorAlignmentMethod)alignmentMethod, templateImage);
                anchorAlignmentMethodTool.OnConfigurationFinishedEvent += (AnchorAlignmentMethod anchorAlignmentMethod) =>
                {
                    AlignmentMethods[alignmentMethod.PipelineIndex] = anchorAlignmentMethod;
                    anchorAlignmentMethodTool.Close();
                };
                anchorAlignmentMethodTool.ShowDialog();
                break;

            case AlignmentMethodType.Registration:
                RegistrationAlignmentMethodForm registrationAlignmentMethodForm = new RegistrationAlignmentMethodForm((RegistrationAlignmentMethod)alignmentMethod, templateImage);
                registrationAlignmentMethodForm.OnConfigurationFinishedEvent += (RegistrationAlignmentMethod registrationAlignmentMethod) =>
                {
                    AlignmentMethods[alignmentMethod.PipelineIndex] = registrationAlignmentMethod;
                    registrationAlignmentMethodForm.Close();
                };
                registrationAlignmentMethodForm.ShowDialog();
                break;
            }
        }
コード例 #3
0
        private void DeleteMethod(AlignmentMethodListItem methodListItem)
        {
            if (Messages.ShowQuestion("Are you sure you want to delete this method?", "Hold On", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.No)
            {
                return;
            }

            AlignmentMethod method = AlignmentMethods[methodListItem.listIndex];

            bool isDeleted = AlignmentMethods.Remove(method);

            if (isDeleted)
            {
                containerFlowPanel.Controls.Remove(methodListItem);

                if (AlignmentMethods.Count == 0)
                {
                    if (!containerFlowPanel.Controls.Contains(emptyListLabel))
                    {
                        containerFlowPanel.Controls.Add(emptyListLabel);
                    }

                    emptyListLabel.Visible = true;
                }
            }

            for (int i = 0; i < AlignmentMethods.Count; i++)
            {
                AlignmentMethods[i].PipelineIndex = i;
                AlignmentMethodListItem alignmentMethodListItem = (AlignmentMethodListItem)containerFlowPanel.Controls[i];
                alignmentMethodListItem.listIndex = i;
            }
        }
コード例 #4
0
        public static AlignmentMethodListItem Create(AlignmentMethod method)
        {
            AlignmentMethodListItem alignmentMethodListItem = new AlignmentMethodListItem();

            alignmentMethodListItem.MethodName          = method.MethodName;
            alignmentMethodListItem.AlignmentMethodType = method.GetAlignmentMethodType;
            alignmentMethodListItem.listIndex           = method.PipelineIndex;

            return(alignmentMethodListItem);
        }
コード例 #5
0
        private void AddMethod(AlignmentMethod alignmentMethod)
        {
            AlignmentMethodListItem alignmentMethodListItem = AlignmentMethodListItem.Create(alignmentMethod);

            alignmentMethodListItem.OnControlButtonPressedEvent += OnConfigControlButtonPressed;
            containerFlowPanel.Controls.Add(alignmentMethodListItem);
            alignmentMethodListItem.Size = new Size(containerFlowPanel.Size.Width, alignmentMethodListItem.Size.Height);
            emptyListLabel.Visible       = false;

            AlignmentMethods.Add(alignmentMethod);
        }
コード例 #6
0
        private void Initialize(List <AlignmentMethod> alignmentMethods)
        {
            pipelineTestMainTablePanel.Dock = DockStyle.None;
            pipelineTestControlsPanel.Dock  = DockStyle.None;
            MainLayoutPanel.SetRow(pipelineTestMainTablePanel, 0);
            MainLayoutPanel.SetRow(pipelineTestControlsPanel, 1);
            pipelineTestMainTablePanel.Dock = DockStyle.Fill;
            pipelineTestControlsPanel.Dock  = DockStyle.Fill;

            pipelineTestSettingsTablePanel.RowCount = alignmentMethods.Count == 1 ? alignmentMethods.Count + 1 : alignmentMethods.Count;
            pipelineTestSettingsTablePanel.RowStyles.Clear();

            for (int i = 0; i < pipelineTestSettingsTablePanel.RowCount; i++)
            {
                if (i == pipelineTestSettingsTablePanel.RowCount - 1 && alignmentMethods.Count == 1)
                {
                    pipelineTestSettingsTablePanel.RowStyles.Add(new RowStyle(SizeType.Percent, 100));
                }
                else
                {
                    pipelineTestSettingsTablePanel.RowStyles.Add(new RowStyle(SizeType.Absolute, 50));
                    AlignmentMethod alignmentMethod = alignmentMethods[i];

                    TabPageAdv methodTabPage = CreateAlignmentMethodTabPage(alignmentMethod);
                    alignmentPipelineTabControl.TabPages.Add(methodTabPage);
                    methodTabPage.Dock = DockStyle.Fill;

                    PipelineTestMethodSettingControl pipelineTestMethodSettingControl = new PipelineTestMethodSettingControl(alignmentMethod.MethodName, alignmentMethod.PipelineIndex);
                    pipelineTestMethodSettingControl.OnEnabledChangedEvent += (int pipelineIndex, bool isEnabled) =>
                    {
                        if (!isEnabled)
                        {
                            ommittedAlignmetMethodIndeces.Add(pipelineIndex);
                        }
                        else
                        {
                            ommittedAlignmetMethodIndeces.Remove(pipelineIndex);
                        }
                    };
                    pipelineTestSettingsTablePanel.Controls.Add(pipelineTestMethodSettingControl, 0, i);
                    pipelineTestMethodSettingControl.Dock = DockStyle.Top;
                }
            }
        }
コード例 #7
0
        private void MoveMethod(AlignmentMethodListItem methodListItem, bool isUp)
        {
            int             curIndex  = methodListItem.listIndex;
            AlignmentMethod method    = AlignmentMethods[curIndex];
            int             moveIndex = 0;

            if (isUp)
            {
                moveIndex = curIndex == 0? 0 : curIndex - 1;
            }
            else
            {
                moveIndex = curIndex == AlignmentMethods.Count - 1? curIndex : curIndex + 1;
            }
            containerFlowPanel.Controls.SetChildIndex(methodListItem, moveIndex);
            AlignmentMethods.RemoveAt(curIndex);
            AlignmentMethods.Insert(moveIndex, method);
            method.PipelineIndex = moveIndex;
            AlignmentMethods[curIndex].PipelineIndex = curIndex;
            methodListItem.listIndex = moveIndex;
        }
コード例 #8
0
        private void OnConfigControlButtonPressed(object sender, ControlButton controlButton)
        {
            AlignmentMethodListItem alignmentMethodListItem = (AlignmentMethodListItem)sender;

            switch (controlButton)
            {
            case ControlButton.Delete:
                DeleteMethod(alignmentMethodListItem);
                break;

            case ControlButton.MoveUp:
                MoveMethod(alignmentMethodListItem, true);
                break;

            case ControlButton.MoveDown:
                MoveMethod(alignmentMethodListItem, false);
                break;

            case ControlButton.Configure:
                AlignmentMethod alignmentMethod = AlignmentMethods[alignmentMethodListItem.listIndex];
                ConfigureMethod(alignmentMethod);
                break;
            }
        }
コード例 #9
0
        private string getFormattedString(string text, StringAlignment alignment, int maxLineLength)
        {
            AlignmentMethod alignmentMethod = leftAlignString;

            switch (alignment)
            {
            case StringAlignment.Center:
                alignmentMethod = centerAlignString;
                break;

            case StringAlignment.Far:
                alignmentMethod = rightAlignString;
                break;

            case StringAlignment.Near:
                alignmentMethod = leftAlignString;
                break;
            }
            Font font = new Font("Consolas", 10f);

            if (text.Length > maxLineLength)
            {
                string   tempString1 = "";
                string   tempString2 = "";
                string[] stringArray = text.Split(' ');
                text = "";
                for (int i = 0; i < stringArray.Length; i++)
                {
                    string textIterator = stringArray[i];
                    tempString1 += ' ' + textIterator;
                    if (textIterator.Length > maxLineLength)
                    {
                        int    truncateIndex   = maxLineLength - tempString2.Length - 1;
                        string partsOfIterator = textIterator.Substring(0, truncateIndex);

                        if (tempString2 != "")
                        {
                            tempString2 = tempString2.Substring(1, tempString2.Length - 1);
                        }
                        text += alignmentMethod(tempString2 + ' ' + partsOfIterator, maxLineLength) + "\n\r";

                        for (; truncateIndex < textIterator.Length; truncateIndex += maxLineLength)
                        {
                            if (truncateIndex + maxLineLength <= textIterator.Length)
                            {
                                text += textIterator.Substring(truncateIndex, maxLineLength) + "\n\r";
                            }
                            else
                            {
                                text += textIterator.Substring(truncateIndex, textIterator.Length - truncateIndex);
                            }
                        }
                        tempString1 = "";
                        tempString2 = "";
                    }
                    // Minus 1 is for the extra leading space
                    else if (tempString1.Length - 1 > maxLineLength)
                    {
                        if (tempString2 != "")
                        {
                            tempString2 = tempString2.Substring(1, tempString2.Length - 1);
                        }
                        text       += alignmentMethod(tempString2, maxLineLength) + "\n\r";
                        tempString1 = ' ' + textIterator;
                        tempString2 = tempString1;
                    }
                    else if (i != stringArray.Length - 1)
                    {
                        tempString2 = tempString1;
                    }
                    else
                    {
                        if (tempString1 != "")
                        {
                            text += alignmentMethod(tempString1.Substring(1, tempString1.Length - 1), maxLineLength);
                        }
                        tempString1 = "";
                        tempString2 = "";
                    }
                }
                if (tempString1 != "")
                {
                    text += alignmentMethod(tempString1.Substring(1, tempString1.Length - 1), maxLineLength);
                }
            }
            else
            {
                text = alignmentMethod(text, maxLineLength);
            }
            List <string> padderListString = text.Split('\n', '\r').ToList();

            padderListString.RemoveAll(x => x == "");
            text = "";
            for (int i = 0; i < padderListString.Count; i++)
            {
                string tempText = padderListString[i];
                int    length   = maxLineLength - tempText.Length;
                for (int j = 0; j < length; j++)
                {
                    tempText += " ";
                }
                text += tempText;
                if (i != padderListString.Count - 1)
                {
                    text += "\n\r";
                }
            }

            return(text);
        }
コード例 #10
0
        private string getFormattedString(string text, StringAlignment alignment, int maxLineLength)
        {
            AlignmentMethod alignmentMethod = leftAlignString;

            subStringAdjust = 0;
            switch (alignment)
            {
            case StringAlignment.Center:
                alignmentMethod = centerAlignString;
                break;

            case StringAlignment.Far:
                alignmentMethod = rightAlignString;
                break;

            case StringAlignment.Near:
                alignmentMethod = leftAlignString;
                break;
            }
            if (textLength(text) > maxLineLength)
            {
                string   tempString1 = "";
                string   tempString2 = "";
                string[] stringArray = text.Split(' ');
                text = "";
                for (int i = 0; i < stringArray.Length; i++)
                {
                    string textIterator = stringArray[i];
                    tempString1 += ' ' + textIterator;
                    if (textLength(textIterator) > maxLineLength)
                    {
                        int truncateIndex = maxLineLength;
                        if (tempString2.Length > 0)
                        {
                            truncateIndex = truncateIndex - textLength(tempString2) - 1;
                        }
                        //string partsOfIterator = textIterator.Substring(0, truncateIndex);
                        string partsOfIterator = subString(textIterator, 0, truncateIndex);

                        if (tempString2 != "")
                        {
                            tempString2 = subString(tempString2, 1, textLength(tempString2) - 1);
                        }

                        if (tempString2.Length > 0)
                        {
                            text += alignmentMethod(tempString2 + ' ' + partsOfIterator, maxLineLength).Trim() + "\n\r";
                        }
                        else
                        {
                            text += alignmentMethod(partsOfIterator, maxLineLength).Trim() + "\n\r";
                        }

                        for (; truncateIndex < textLength(textIterator); truncateIndex += maxLineLength)
                        {
                            if (truncateIndex + maxLineLength <= textLength(textIterator))
                            {
                                //text += textIterator.Substring(truncateIndex, maxLineLength) + "\n\r";
                                text += alignmentMethod(subString(textIterator, truncateIndex, maxLineLength), maxLineLength).Trim() + "\n\r";
                            }
                            else
                            {
                                //text += textIterator.Substring(truncateIndex, textIterator.Length - truncateIndex);
                                text += alignmentMethod(subString(textIterator, truncateIndex, textLength(textIterator) - truncateIndex), maxLineLength);
                            }
                        }
                        tempString1 = "";
                        tempString2 = "";
                    }
                    // Minus 1 is for the extra leading space
                    else if (textLength(tempString1) - 1 > maxLineLength)
                    {
                        if (tempString2 != "")
                        {
                            //tempString2 = tempString2.Substring(1, tempString2.Length - 1);
                            tempString2 = subString(tempString2, 1, textLength(tempString2) - 1);
                        }
                        text       += alignmentMethod(tempString2, maxLineLength) + "\n\r";
                        tempString1 = ' ' + textIterator;
                        tempString2 = tempString1;
                    }
                    else if (textLength(tempString1) == maxLineLength || textLength(tempString1) - 1 == maxLineLength)
                    {
                        //text += alignmentMethod(tempString1.Substring(1, textLength(tempString1) - 1), maxLineLength) + "\n\r";
                        text       += alignmentMethod(subString(tempString1, 1, textLength(tempString1) - 1), maxLineLength) + "\n\r";
                        tempString1 = "";
                        tempString2 = "";
                    }
                    // Cancelled out Minus 1 to consider trailing space for line && tempString1.Length < maxLineLength
                    else if (i != stringArray.Length - 1)
                    {
                        tempString2 = tempString1;
                    }
                    else
                    {
                        if (tempString1 != "")
                        {
                            //text += alignmentMethod(tempString1.Substring(1, textLength(tempString1) - 1), maxLineLength);
                            text += alignmentMethod(subString(tempString1, 1, textLength(tempString1) - 1), maxLineLength);
                        }
                        tempString1 = "";
                        tempString2 = "";
                    }
                }
                if (tempString1 != "")
                {
                    //text += alignmentMethod(tempString1.Substring(1, textLength(tempString1) - 1), maxLineLength);
                    text += alignmentMethod(subString(tempString1, 1, textLength(tempString1) - 1), maxLineLength);
                }
            }
            else
            {
                text = alignmentMethod(text, maxLineLength);
            }
            List <string> padderListString = text.Split('\n', '\r').ToList();

            padderListString.RemoveAll(x => x == "");
            text = "";
            for (int i = 0; i < padderListString.Count; i++)
            {
                string tempText = padderListString[i];
                int    length   = maxLineLength - textLength(tempText);
                for (int j = 0; j < length; j++)
                {
                    tempText += " ";
                }
                text += tempText;
                if (i != padderListString.Count - 1)
                {
                    text += "\n\r";
                }
            }

            //Check if there is a chinese char on productname
            for (int index = 0; index < text.Length; index++)
            {
                if (char.GetUnicodeCategory(text[index]) == UnicodeCategory.OtherLetter)
                {
                    globalvariables.PrintChineseCharacters = true;
                    break;
                }
            }

            return(text);
        }