예제 #1
0
    public Object Clone()
    {
        Layer clone = new Layer(_bitmap.Width, _bitmap.Height);

        clone._bitmap = (FastBitmap)_bitmap.Clone();
        return(clone);
    }
예제 #2
0
        public void Clone_ShouldCreateNewCopy()
        {
            FastBitmap src = FastBmp;
            FastBitmap dst = (FastBitmap)src.Clone();

            Assert.Equal(src.Length, dst.Length);
            for (int i = 0; i < src.Length; i++)
            {
                Assert.Equal(src.Data[i], dst.Data[i]);
            }
        }
예제 #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="bitmap"></param>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <param name="color"></param>
        /// <returns></returns>
        public static Bitmap SetReplacesFloodFill(Bitmap bitmap, int x, int y, Color color)
        {
            var img = new FastBitmap(bitmap);

            img.LockImage();
            int width  = 0; //
            int height = 0; //
            var rect   = img.FloodFill(0, 0, color, width, height);

            img.ReplaceColor(Color.FromArgb(158, 148, 159), Color.White);

            img.Clone();
            img.UnlockImage();
            return(img.Image);
        }
        /// <summary>
        /// Бинарная пороговая сегментация.
        /// </summary>
        /// <param name="img">Объект изображения типа FastBitmap</param>
        /// <param name="threshold">Значение порога</param>
        /// <param name="maxValue">Максимальная интенсивность изображения после сегментации</param>
        /// <returns>Результат бинарной сегментации</returns>
        public FastBitmap Segmentation(FastBitmap img, byte threshold, byte maxValue)
        {
            var imgResult = img.Clone();

            if (!imgResult.IsGray)
            {
                imgResult.ToGray();
            }
            for (int x = 0; x < imgResult.Width; x++)
            {
                for (int y = 0; y < imgResult.Height; y++)
                {
                    byte pixelValue = imgResult[x, y, 0] > threshold ? (byte)0 : maxValue;
                    for (int color = 0; color < imgResult.DimensionsColor; color++)
                    {
                        imgResult[x, y, color] = pixelValue;
                    }
                }
            }
            return(imgResult);
        }
예제 #5
0
        /// <summary>
        /// Задает изображения для теста (по кругу).
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Button4_Click(object sender, EventArgs e)
        {
            Bitmap bitmapRGB, bitmapTEMP, bitmapREAL;

            if (iterator == 1)
            {
                bitmapRGB  = Resource1.TestRGB_1;
                bitmapTEMP = Resource1.TestTEMP_1;
                bitmapREAL = Resource1.TestReal_1;
                iterator++;
            }
            else if (iterator == 2)
            {
                bitmapRGB  = Resource1.TestRGB_2;
                bitmapTEMP = Resource1.TestTEMP_2;
                bitmapREAL = Resource1.TestReal_2;
                iterator++;
            }
            else
            {
                bitmapRGB  = Resource1.TestRGB_3;
                bitmapTEMP = Resource1.TestTEMP_3;
                bitmapREAL = Resource1.TestReal_3;
                iterator   = 1;
            }
            imgRGB  = new FastBitmap(bitmapRGB);
            imgTEMP = new FastBitmap(bitmapTEMP);

            imgGray = imgRGB.Clone();
            imgGray.ToGray();
            imgTEMPGray = imgTEMP.Clone();
            imgTEMPGray.ToGray();

            imgReal = new FastBitmap(bitmapREAL);

            pictureRGB.Image  = imgRGB.Bitmap;
            pictureTEMP.Image = imgTEMP.Bitmap;
        }
예제 #6
0
 private void ImageTEMP_Click(object sender, EventArgs e)
 {
     imgTEMP     = ImageLoad(pictureTEMP);
     imgTEMPGray = imgTEMP.Clone();
     imgTEMPGray.ToGray();
 }
예제 #7
0
 private void ImageRGB_Click(object sender, EventArgs e)
 {
     imgRGB  = ImageLoad(pictureRGB);
     imgGray = imgRGB.Clone();
     imgGray.ToGray();
 }