powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Обработка изображений на С#
16 сообщений из 16, страница 1 из 1
Обработка изображений на С#
    #38526116
VIP2020
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Суть задачки:

авторНапишите программу, которая обрабатывает картинки в задаваемой директории. Каждая картинка преобразовывается по одному из следующих правил:

Убирается одна из компонент (например красная)
Уменьшается яркость на 10%
Картинка преобразовывается в чёрно-белую.
Значение каждого пикселя заменяется на среднее значение ближайших (размытие)


Возможно, понадобиться это:

авторМассив цветов пикселей это массив байт в котором четыре подряд идущие байта определяют прозрачную, синию, зелёную и красную состовляющую цвета. Чтобы получить доступ к массиву байт MSDN рекомендует следующий способ.

// Create a new bitmap.
Bitmap bmp = new Bitmap(640, 480);

// Lock the bitmap's bits.
Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
System.Drawing.Imaging.BitmapData bmpData =
bmp.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite,
bmp.PixelFormat);

// Get the address of the first line.
IntPtr ptr = bmpData.Scan0;

// Declare an array to hold the bytes of the bitmap.
int bytes = Math.Abs(bmpData.Stride) * bmp.Height;
byte[] rgbValues = new byte[bytes];
После этого вы можете менять массив rgbValues. Для этого вы используете GPU. Когда закончите, то необходимо загрузить массив в изображение.

// Copy the RGB values back to the bitmap
System.Runtime.InteropServices.Marshal.Copy(rgbValues, 0, ptr, bytes);

// Unlock the bits.
bmp.UnlockBits(bmpData);

Кто разбирается в этой теме и может помочь?
...
Рейтинг: 0 / 0
Обработка изображений на С#
    #38526144
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIP2020,

в чем помочь. У вас есть код, вы пробовали его хотя бы воспроизвести?
...
Рейтинг: 0 / 0
Обработка изображений на С#
    #38526150
VIP2020
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пытался, но это ни к чему не привело, поэтому и обратился за помощью.
Скажите, чтобы выполнять данные операции нужна Cuda?
...
Рейтинг: 0 / 0
Обработка изображений на С#
    #38526154
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIP2020,

Да, и только на NVidia Tesla. Иначе производительности не хватит XD
...
Рейтинг: 0 / 0
Обработка изображений на С#
    #38526157
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIP2020,

http://msdn.microsoft.com/ru-ru/library/system.drawing.imaging.bitmapdata(v=vs.110).aspx

Ваш пример, кстати говоря, не корректен.
...
Рейтинг: 0 / 0
Обработка изображений на С#
    #38526158
VIP2020
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lelouch , у меня и видеокарта не NVidia. Сможете помочь?
...
Рейтинг: 0 / 0
Обработка изображений на С#
    #38526160
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIP2020,

извините. тут нет таблички "сарказм". Думал что и без этого понятно будет....
...
Рейтинг: 0 / 0
Обработка изображений на С#
    #38526163
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во-первых, для этого вообще будет использоваться только ЦП.
Во-вторых, почитайте хотя бы, что такое CUDA: http://ru.wikipedia.org/wiki/CUDA
...
Рейтинг: 0 / 0
Обработка изображений на С#
    #38526185
VIP2020
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прочитал про Cuda.
Если для этого будет использоваться только CPU, то значит для проведения этих днйствий наличие видеокарты от NVidia необязательно?
...
Рейтинг: 0 / 0
Обработка изображений на С#
    #38526205
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIP2020,

идею фрагмент описывает терпимо
кроме -

1) System.Drawing.Imaging.BitmapData bmpData =
bmp.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite,
bmp.PixelFormat); - здесь косяк, нужно указывать явный формат в котором будет вестись обработка
предпочтительно - System.Drawing.Imaging.PixelFormat.Format32bppRgb
4 байта на пиксель, BGR, один не используется
2) пропущено копирование bmpData.Scan0 -> rgbValues
Marshal.Copy(bmpData.Scan0,rgbValues,0,bytes);
вместо этого бред про GPU

теперь поиграйтесь байтиками в массиве rgbValues - например обнулите каждый четвёртый, поменяйте местами и т д, с адресацией пикселей разберитесь

потом продолжим с остальным
...
Рейтинг: 0 / 0
Обработка изображений на С#
    #38526245
VIP2020
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как "играть" с пикселями? Не понимаю.
...
Рейтинг: 0 / 0
Обработка изображений на С#
    #38526248
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIP2020А как "играть" с пикселями? Не понимаю.
меняй значения - смотри как изображение меняется на экране
...
Рейтинг: 0 / 0
Обработка изображений на С#
    #38526888
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот что, например, значит убрать красную компоненту? У пикселя со значением RGB (255,0,0) поменять цвет?
...
Рейтинг: 0 / 0
Обработка изображений на С#
    #38526902
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelavikНу вот что, например, значит убрать красную компоненту? У пикселя со значением RGB (255,0,0) поменять цвет?

в первом приближении: (r,g,b) -> (0,g,b)
...
Рейтинг: 0 / 0
Обработка изображений на С#
    #38526968
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилBelavikНу вот что, например, значит убрать красную компоненту? У пикселя со значением RGB (255,0,0) поменять цвет?

в первом приближении: (r,g,b) -> (0,g,b)
Пробежать по всей картинке двойным циклом и поменять. Без проблем
...
Рейтинг: 0 / 0
Обработка изображений на С#
    #38526999
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
второе приближение будет, если требуется компенсировать уменьшение яркости
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Обработка изображений на С#
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]