Нахождение пересечения линий - 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;
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д