You are here: Start » AVL.NET » Adaptive Vision Library .NET Usage » Designers
Designers
The following example is a simple image thresholding application that allows to threshold an image within the user-defined ROI which can be defined in the RegionDesigner.
The application, besides the region editor provided by the Avl.Net.Designers.dll assembly, is a single-form application that contains two picture boxes, two track bar controls responsible for setting the thresholds and several buttons that allow to load images:
//... using AvlNet; using AvlNet.Designers; //... public partial class Form1 : Form { Region roi; /// <summary> /// image being thresholded /// </summary> Image image; public Form1() { InitializeComponent(); } /// <summary> /// Loads an image /// </summary> private void image_Click(object sender, EventArgs e) { Image newImage = null; Image dummyImage = null; if (sender == lenaRgbBtn) AVL.TestImage(TestImageId.Lena, out newImage, out dummyImage); else if (sender == fromFileBtn) { if (openImageDialog.ShowDialog() == DialogResult.OK) { try { AVL.LoadImage(openImageDialog.FileName, false, out newImage); } catch (Exception ex) { MessageBox.Show(ex.Message, "Loading error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } if (newImage != null && image != null && !image.IsDisposed) image.Dispose(); if (newImage != null) image = newImage; if (dummyImage != null) dummyImage.Dispose(); if (roi != null && (roi.FrameHeight > image.Height || roi.FrameWidth > image.Width)) { AVL.CropRegion( roi, new Box(0, 0, Math.Min(roi.FrameWidth, image.Width), Math.Min(roi.FrameHeight, image.Height)), out roi); } UpdatePreview(); UpdateThresholdResult(); } /// <summary> /// Performs image thresholding either in defined ROI or of a cropped image. /// </summary> private void UpdateThresholdResult() { if (image == null) { resultPreview.Image = null; return; } Image thresholdedImage = null; AVL.ThresholdImage(image, roi, minTrackBar.Value, maxTrackBar.Value, 1.0f, out thresholdedImage); if (thresholdedImage != null) { resultPreview.Image = thresholdedImage.CreateBitmap(); thresholdedImage.Dispose(); } } /// <summary> /// Updates loaded image miniature with drawn either a ROI or a box into with image is cropped /// </summary> private void UpdatePreview() { if (image == null || image.IsDisposed) { imagePreview.Image = null; return; } Image miniature = new Image(image); if (roi != null) AVL.DrawRegion(ref miniature, roi, Pixel.Blue, 0.5f); imagePreview.Image = miniature.CreateBitmap(); miniature.Dispose(); } /// <summary> /// Opens a RegionDesigner to edit a ROI within which an image will be thresholded. /// </summary> private void regionButton_Click(object sender, EventArgs e) { using (RegionDesigner designer = new RegionDesigner()) { if (image != null) designer.Backgrounds = new Image[] { image }; designer.Region = roi; if (designer.ShowDialog(this) == DialogResult.OK) { roi = designer.Region; } } UpdatePreview(); UpdateThresholdResult(); } private void trackBar_ValueChanged(object sender, EventArgs e) { UpdateThresholdResult(); }
| Previous: Blob Analysis | Next: Function Reference |
