コード例 #1
0
        public override Bitmap processImage(Bitmap sourceImage, BackgroundWorker worker)
        {
            Filters dilate = new Dilation(Elem);
            Filters erode  = new Erosion(Elem);

            Bitmap resD = new Bitmap(sourceImage.Width, sourceImage.Height);
            Bitmap resE = new Bitmap(sourceImage.Width, sourceImage.Height);
            Bitmap res  = new Bitmap(sourceImage.Width, sourceImage.Height);

            resD = dilate.processImage(sourceImage, worker);
            resE = erode.processImage(sourceImage, worker);

            for (int i = 0; i < sourceImage.Width; i++)
            {
                worker.ReportProgress((int)((float)i / res.Width * 100));
                if (worker.CancellationPending)
                {
                    return(null);
                }

                for (int j = 0; j < sourceImage.Height; j++)
                {
                    res.SetPixel(i, j, Color.FromArgb(Clamp(resD.GetPixel(i, j).R - resE.GetPixel(i, j).R, 0, 255),
                                                      Clamp(resD.GetPixel(i, j).G - resE.GetPixel(i, j).G, 0, 255),
                                                      Clamp(resD.GetPixel(i, j).B - resE.GetPixel(i, j).B, 0, 255)));
                }
            }

            return(res);
        }
コード例 #2
0
ファイル: Form1.cs プロジェクト: VadimKutovoi/UberFilters
        private void dilationToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Filters filter = new Dilation(strElem);

            backgroundWorker1.RunWorkerAsync(filter);
        }