public Object Clone() { Layer clone = new Layer(_bitmap.Width, _bitmap.Height); clone._bitmap = (FastBitmap)_bitmap.Clone(); return(clone); }
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]); } }
/// <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); }
/// <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; }
private void ImageTEMP_Click(object sender, EventArgs e) { imgTEMP = ImageLoad(pictureTEMP); imgTEMPGray = imgTEMP.Clone(); imgTEMPGray.ToGray(); }
private void ImageRGB_Click(object sender, EventArgs e) { imgRGB = ImageLoad(pictureRGB); imgGray = imgRGB.Clone(); imgGray.ToGray(); }