Нахождение пересечения линий - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Дано изображение с белым фоном и черными пересекающимися линиями. Надо найти координаты пересечения линий. ( координаты линий не заданы) Прошу хоть как-то что-то подсказать по решению этой задачи.

Решение задачи: «Нахождение пересечения линий»

textual
Листинг программы
  1. namespace WindowsFormsTest {
  2.     using System;
  3.     using System.Drawing;
  4.     using System.Drawing.Drawing2D;
  5.     using System.Drawing.Imaging;
  6.     using System.Windows.Forms;
  7.  
  8.     using AForge.Imaging;
  9.     using AForge.Imaging.Filters;
  10.  
  11.     public partial class Form1 : Form {
  12.         private Bitmap _image;
  13.  
  14.         public Form1() {
  15.             InitializeComponent();
  16.         }
  17.  
  18.         private void button1_Click(object sender, EventArgs e) {
  19.             int h = 200;
  20.             _image = new Bitmap(h, h, PixelFormat.Format24bppRgb);
  21.             var r = new Random();
  22.             using (Graphics g = Graphics.FromImage(_image)) {
  23.                 g.CompositingQuality = CompositingQuality.HighQuality;
  24.                 g.SmoothingMode = SmoothingMode.HighQuality;
  25.  
  26.                 g.Clear(Color.Black);
  27.                 var pen = new Pen(Color.White, 1.5f);
  28.                 for (int i = 0; i < 10; i++) {
  29.                     g.DrawLine(pen, r.Next(h), r.Next(h), r.Next(h), r.Next(h));
  30.                 }
  31.             }
  32.             pictureBox1.Image = _image;
  33.         }
  34.  
  35.         private void button2_Click(object sender, EventArgs e) {
  36.             Bitmap clone = _image.Clone(new Rectangle(0, 0, 200, 200), PixelFormat.Format8bppIndexed);
  37.  
  38. // Выделяем пересечения линий.
  39.             Bitmap vImage = new Erosion(new short[,]
  40.                 {
  41.                     { 1, 0, 1 },
  42.                     { 0, 1, 0 },
  43.                     { 0, 1, 0 }
  44.                 }).Apply(clone);
  45.  
  46. // Отбрасываем лишние срабатывания.
  47.             vImage = new Threshold().Apply(vImage);
  48.            
  49. // Строим прямоугольники вокруг найденный пересечений.
  50.             var blobCounter = new BlobCounter();
  51.             blobCounter.ProcessImage(vImage);
  52.  
  53.             using (Graphics g = Graphics.FromImage(_image)) {
  54.                 var pen = new Pen(Color.Red, 2.5f);
  55.                 foreach (Blob blob in blobCounter.GetObjectsInformation()) {
  56.                     g.DrawRectangle(pen, blob.Rectangle);
  57.                 }
  58.             }
  59.  
  60.             pictureBox1.Image = _image;
  61.             pictureBox2.Image = vImage;
  62.         }
  63.     }
  64. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы