Нахождение пересечения линий - C#
Формулировка задачи:
Здравствуйте!
Дано изображение с белым фоном и черными пересекающимися линиями. Надо найти координаты пересечения линий. ( координаты линий не заданы)
Прошу хоть как-то что-то подсказать по решению этой задачи.
Решение задачи: «Нахождение пересечения линий»
textual
Листинг программы
namespace WindowsFormsTest { using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.Windows.Forms; using AForge.Imaging; using AForge.Imaging.Filters; public partial class Form1 : Form { private Bitmap _image; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { int h = 200; _image = new Bitmap(h, h, PixelFormat.Format24bppRgb); var r = new Random(); using (Graphics g = Graphics.FromImage(_image)) { g.CompositingQuality = CompositingQuality.HighQuality; g.SmoothingMode = SmoothingMode.HighQuality; g.Clear(Color.Black); var pen = new Pen(Color.White, 1.5f); for (int i = 0; i < 10; i++) { g.DrawLine(pen, r.Next(h), r.Next(h), r.Next(h), r.Next(h)); } } pictureBox1.Image = _image; } private void button2_Click(object sender, EventArgs e) { Bitmap clone = _image.Clone(new Rectangle(0, 0, 200, 200), PixelFormat.Format8bppIndexed); // Выделяем пересечения линий. Bitmap vImage = new Erosion(new short[,] { { 1, 0, 1 }, { 0, 1, 0 }, { 0, 1, 0 } }).Apply(clone); // Отбрасываем лишние срабатывания. vImage = new Threshold().Apply(vImage); // Строим прямоугольники вокруг найденный пересечений. var blobCounter = new BlobCounter(); blobCounter.ProcessImage(vImage); using (Graphics g = Graphics.FromImage(_image)) { var pen = new Pen(Color.Red, 2.5f); foreach (Blob blob in blobCounter.GetObjectsInformation()) { g.DrawRectangle(pen, blob.Rectangle); } } pictureBox1.Image = _image; pictureBox2.Image = vImage; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д