0 / 0 / 0
Регистрация: 22.12.2011
Сообщений: 13
1

Функция, которая каждую четную строку изображения переводит в градации серого цвета

15.06.2015, 18:25. Показов 7704. Ответов 1
Метки нет (Все метки)

Разработайте функцию, которая каждую четную строку изображения переводит в градации серого цвета
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.06.2015, 18:25
Ответы с готовыми решениями:

Преобразование изображения в градации серого
Нашел! Dim grayscale As New Imaging.ColorMatrix(New Single()() _ { _ ...

Перевод в градации серого части изображения
Доброго времени суток! Нужна помощь. Возникла проблема при выполнении вот такой работы: "Создайте...

Градации серого полосами на изображении
Доброго времени суток, в общем, задание какое, сделать так, чтобы градации серого шли полосами не...

Покрасить каждую чётную строку
Надо покрасить каждую чётную строку Program tm; uses crt; var c:integer; i:integer; ...

1
Эксперт .NETАвтор FAQ
10365 / 5096 / 1824
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
15.06.2015, 20:11 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

xDefx,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.Net;
using System.Windows.Forms;
 
namespace WindowsFormsApplication297
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
 
            var img = (Bitmap)Image.FromStream(new WebClient().OpenRead("http://www.cs.cmu.edu/~chuck/lennapg/len_std.jpg"));
            BackgroundImage = img;
            BackgroundImageLayout = ImageLayout.Center;
 
            new Button() { Parent = this, Text = "Process" }.Click += delegate { Process(img); Invalidate(); };
        }
 
        private void Process(Bitmap img)
        {
            using (var wr = new ImageWrapper(img, true))
                for (int x = 0; x < wr.Width; x++ )
                for (int y = 0; y < wr.Height; y += 2)
                {
                    var br = (int)(wr[x, y].GetBrightness() * 255);
                    wr[x, y] = Color.FromArgb(br, br, br);
                }
        }
    }
 
    /// <summary>
    /// Враппер над Bitmap для быстрого чтения и изменения пикселов.
    /// Также, класс контролирует выход за пределы изображения. При чтении за границей изображения - возвращает DefaultColor, при записи за границей изображения - игнорирует присвоение.
    /// </summary>
    public class ImageWrapper : IDisposable, IEnumerable<Point>
    {
        public int Width { get; private set; }
        public int Height { get; private set; }
        public Color DefaultColor { get; set; }
        private byte[] data;
        private byte[] outData;
        private int stride;
        private BitmapData bmpData;
        private Bitmap bmp;
 
        public ImageWrapper(Bitmap bmp, bool copySourceToOutput = false)
        {
            Width = bmp.Width;
            Height = bmp.Height;
            this.bmp = bmp;
 
            bmpData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
            stride = bmpData.Stride;
 
            data = new byte[stride * Height];
            System.Runtime.InteropServices.Marshal.Copy(bmpData.Scan0, data, 0, data.Length);
 
            outData = copySourceToOutput ? (byte[])data.Clone() : new byte[stride * Height];
        }
 
        public Color this[int x, int y]
        {
            get
            {
                var i = GetIndex(x, y);
                return i < 0 ? DefaultColor : Color.FromArgb(data[i + 3], data[i + 2], data[i + 1], data[i]);
            }
 
            set
            {
                var i = GetIndex(x, y);
                if (i >= 0)
                {
                    outData[i] = value.B;
                    outData[i + 1] = value.G;
                    outData[i + 2] = value.R;
                    outData[i + 3] = value.A;
                };
            }
        }
 
        public Color this[Point p]
        {
            get { return this[p.X, p.Y]; }
            set { this[p.X, p.Y] = value; }
        }
 
        public void SetPixel(Point p, double r, double g, double b)
        {
            if (r < 0) r = 0;
            if (r >= 256) r = 255;
            if (g < 0) g = 0;
            if (g >= 256) g = 255;
            if (b < 0) b = 0;
            if (b >= 256) b = 255;
 
            this[p.X, p.Y] = Color.FromArgb((int) r, (int) g, (int) b);
        }
 
        int GetIndex(int x, int y)
        {
            return (x < 0 || x >= Width || y < 0 || y >= Height) ? -1 : x * 4 + y * stride;
        }
 
        public void Dispose()
        {
            System.Runtime.InteropServices.Marshal.Copy(outData, 0, bmpData.Scan0, outData.Length);
            bmp.UnlockBits(bmpData);
        }
 
        public IEnumerator<Point> GetEnumerator()
        {
            for (int y = 0; y < Height; y++)
                for (int x = 0; x < Width; x++)
                    yield return new Point(x, y);
        }
 
        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
        {
            return GetEnumerator();
        }
    }
}
Название: 1.png
Просмотров: 376

Размер: 195.9 КбНазвание: 2.png
Просмотров: 363

Размер: 165.3 Кб
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.06.2015, 20:11
Помогаю со студенческими работами здесь

Чем можно переделать скриншот в градации серого?
Чем можно преределать скриншот в градации серого? Чёрнобелый однобитный не подзодит, надо...

Прочитать каждую нечетную и четную строку в файле
На вход идет файл, в котором каждая четная строка является размером пакета, а в нечетной идет...

Каждую четную строку сложить с каждой нечетной строкой
Приветствую Всех, ищу помощи в решении задачи. Заранее благодарю. Дан двумерный массив...

Создать массив целых чисел B10x10. Отсортировать каждую четную строку
Создать массив целых чисел B10x10. в каждой четной строке на 1 место поставить min число этой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru