|
Обработка изображений на С#
|
|||
---|---|---|---|
#18+
Суть задачки: авторНапишите программу, которая обрабатывает картинки в задаваемой директории. Каждая картинка преобразовывается по одному из следующих правил: Убирается одна из компонент (например красная) Уменьшается яркость на 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); Кто разбирается в этой теме и может помочь? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2014, 18:52 |
|
Обработка изображений на С#
|
|||
---|---|---|---|
#18+
VIP2020, в чем помочь. У вас есть код, вы пробовали его хотя бы воспроизвести? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2014, 19:22 |
|
Обработка изображений на С#
|
|||
---|---|---|---|
#18+
Пытался, но это ни к чему не привело, поэтому и обратился за помощью. Скажите, чтобы выполнять данные операции нужна Cuda? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2014, 19:27 |
|
Обработка изображений на С#
|
|||
---|---|---|---|
#18+
VIP2020, Да, и только на NVidia Tesla. Иначе производительности не хватит XD ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2014, 19:31 |
|
Обработка изображений на С#
|
|||
---|---|---|---|
#18+
VIP2020, http://msdn.microsoft.com/ru-ru/library/system.drawing.imaging.bitmapdata(v=vs.110).aspx Ваш пример, кстати говоря, не корректен. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2014, 19:36 |
|
Обработка изображений на С#
|
|||
---|---|---|---|
#18+
Lelouch , у меня и видеокарта не NVidia. Сможете помочь? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2014, 19:37 |
|
Обработка изображений на С#
|
|||
---|---|---|---|
#18+
VIP2020, извините. тут нет таблички "сарказм". Думал что и без этого понятно будет.... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2014, 19:38 |
|
Обработка изображений на С#
|
|||
---|---|---|---|
#18+
Во-первых, для этого вообще будет использоваться только ЦП. Во-вторых, почитайте хотя бы, что такое CUDA: http://ru.wikipedia.org/wiki/CUDA ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2014, 19:40 |
|
Обработка изображений на С#
|
|||
---|---|---|---|
#18+
Прочитал про Cuda. Если для этого будет использоваться только CPU, то значит для проведения этих днйствий наличие видеокарты от NVidia необязательно? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2014, 20:02 |
|
Обработка изображений на С#
|
|||
---|---|---|---|
#18+
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 - например обнулите каждый четвёртый, поменяйте местами и т д, с адресацией пикселей разберитесь потом продолжим с остальным ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2014, 20:17 |
|
Обработка изображений на С#
|
|||
---|---|---|---|
#18+
А как "играть" с пикселями? Не понимаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2014, 21:21 |
|
Обработка изображений на С#
|
|||
---|---|---|---|
#18+
VIP2020А как "играть" с пикселями? Не понимаю. меняй значения - смотри как изображение меняется на экране ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2014, 21:23 |
|
Обработка изображений на С#
|
|||
---|---|---|---|
#18+
Ну вот что, например, значит убрать красную компоненту? У пикселя со значением RGB (255,0,0) поменять цвет? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2014, 13:40 |
|
Обработка изображений на С#
|
|||
---|---|---|---|
#18+
BelavikНу вот что, например, значит убрать красную компоненту? У пикселя со значением RGB (255,0,0) поменять цвет? в первом приближении: (r,g,b) -> (0,g,b) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2014, 13:47 |
|
Обработка изображений на С#
|
|||
---|---|---|---|
#18+
ИзопропилBelavikНу вот что, например, значит убрать красную компоненту? У пикселя со значением RGB (255,0,0) поменять цвет? в первом приближении: (r,g,b) -> (0,g,b) Пробежать по всей картинке двойным циклом и поменять. Без проблем ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2014, 14:16 |
|
|
start [/forum/topic.php?fid=20&msg=38526248&tid=1403415]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
50ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 160ms |
0 / 0 |