示例#1
0
        public void AddResultToGrid(MassObj obj, DataGridView grid)
        {
            grid.Rows.Add();

            var t = 3;

            for (var i = _count; i < grid.RowCount - 1; i++)
            {
                grid.Rows[i].Cells[0].Value = obj.Number;
                grid.Rows[i].Cells[1].Value = obj.Class;
                grid.Rows[i].Cells[2].Value = obj.R;

                for (int k = 0; k < obj.Height; k++)
                {
                    for (int l = 0; l < obj.Width; l++)
                    {
                        grid.Rows[i].Cells[t].Value = obj.Mass[k, l];
                        t++;
                    }
                }
                //}
            }
            //TODO HARDCORE

            _count++;//для того чтобы записывать в новую строку
        }
        private void OpenNewImageButton_Click(object sender, EventArgs e)
        {
            _newMap = _showObj.OpenImage(pictureBox26);

            var newImage = new MassObj();

            newImage = GrayScaleOperations.ToGrayScale(_newMap, 26, 0);

            _grayScaleList = GrayScaleOperations.EuclideanDistance(_grayScaleList, newImage);
        }
示例#3
0
        public static MassObj[] EuclideanDistance(MassObj[] massImages, MassObj image)
        {
            var pTask = new Task <MassObj[]>(() =>
            {
                var rMass = new MassObj[massImages.Length];
                var tsk   = new Task <MassObj> [massImages.Length];
                double R  = 0, sum = 0;

                for (int i = 0; i < massImages.Length; i++)
                {
                    MassObj temp = massImages[i];
                    int i1       = i;

                    tsk[i] = new Task <MassObj>(() =>
                    {
                        for (int j = 0; j < temp.Height; j++)
                        {
                            for (int k = 0; k < temp.Width; k++)
                            {
                                sum += Math.Pow((image.Mass[j, k] + temp.Mass[j, k]), 2);
                            }
                        }

                        R      = Math.Sqrt(sum);
                        temp.R = R;
                        return(rMass[i1] = temp);
                    }, TaskCreationOptions.AttachedToParent);

                    tsk[i].Start();
                }

                return(rMass);
            });

            pTask.Start();
            pTask.Wait();

            return(pTask.Result);
        }
        private void ToGrayScaleBtn_Click(object sender, EventArgs e)
        {
            var count = _bitmaps.Count(t => t != null);

            var pTask = new Task <MassObj[]>(() =>
            {
                var result = new MassObj[count];
                var tsk    = new Task <MassObj> [count];

                for (int i = 0; i < count; i++)
                {
                    int i1 = i;

                    var @class = (i >= 0 && i <= 4) ? 1
                        : (i > 4 && i <= 9)   ? 2
                        : (i > 9 && i <= 14)  ? 3
                        : (i > 14 && i <= 19) ? 4
                        : (i > 19 && i <= 24) ? 5
                        : 0;


                    tsk[i] = new Task <MassObj>(() => result[i1] = GrayScaleOperations.ToGrayScale(_bitmaps[i1], i1 + 1, @class), TaskCreationOptions.AttachedToParent);
                    tsk[i].Start();
                }

                return(result);
            });

            pTask.Start();
            pTask.Wait();

            _grayScaleList = pTask.Result;

            //var map = GrayScaleOperations.FilBitmap(_grayScaleList[0].Mass, _grayScaleList[0].Height, _grayScaleList[0].Width);
            // _showObj.SaveAndShow(map,pictureBox26);
        }