Анализ яркостного и цветового профиля строк - C#

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

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

подскажите плиз скрипт как извлечь из целого изображения строку с показателями яркости и цветности.

Решение задачи: «Анализ яркостного и цветового профиля строк»

textual
Листинг программы
using System;
using System.Drawing;
using System.Net;
using System.Windows.Forms;
 
namespace WindowsFormsApplication327
{
    public partial class Form1 : Form
    {
        private Image img;
        private Cells cells;
 
        public Form1()
        {
            InitializeComponent();
            SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint, true);
 
            img = Image.FromStream(new WebClient {Proxy = null}.OpenRead("https://upload.wikimedia.org/wikipedia/ru/2/24/Lenna.png"));
            cells = new Cells();
 
            Application.Idle += delegate{ cells.Update(); Invalidate();};
        }
 
        protected override void OnPaint(PaintEventArgs e)
        {
            var dx = img.Width/cells.ColCount;
            var dy = img.Height/cells.RowCount;
            var di = Width/cells.ColCount;
            var dj = Height/cells.RowCount;
 
            for (int i = 0; i < cells.ColCount; i++)
            for (int j = 0; j < cells.RowCount; j++)
                e.Graphics.DrawImage(img,
                                     new Rectangle(i * di, j * dj, di, dj),
                                     new Rectangle(cells[i, j].X * dx, cells[i, j].Y * dy, dx, dy),
                                     GraphicsUnit.Pixel);
        }
    }
 
    class Cells
    {
        private Point[,] Items;
        private static Random rnd = new Random();
 
        public int ColCount { get { return Items.GetLength(0); } }
        public int RowCount { get { return Items.GetLength(1); } }
 
        public Cells(int cols = 50, int rows = 50)
        {
            Items = new Point[cols, rows];
            Update();
        }
 
        public Point this[int col, int row]
        {
            get { return Items[col, row]; }
        }
 
        public void Update()
        {
            for (int i = 0; i < ColCount; i++)
            for (int j = 0; j < RowCount; j++)    
            {
                if (Items[i, j].X != i) Items[i, j].X = rnd.Next(ColCount);
                if (Items[i, j].Y != j) Items[i, j].Y = rnd.Next(RowCount);
            }
        }
    }
}

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


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

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

9   голосов , оценка 4.111 из 5
Похожие ответы