Цвет в Ч/Б

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Цвет в Ч/Б

Сообщение Sirik » 20.12.2004 (Пн) 9:50

Как собственно перевести цветное изображение в чёрно-белое?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 20.12.2004 (Пн) 10:03

В ч/б или grayscale?
Lasciate ogni speranza, voi ch'entrate.

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 20.12.2004 (Пн) 10:06

М-да... Наверное всё-таки в последнее. Хотелось бы не совсем в ч/б, а с оттенками серого

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 20.12.2004 (Пн) 10:13

Вот нашёл такой вот код (немного доработав его):
Код: Выделить всё
Option Explicit

Public Function GrayScale(ByVal Colr As Long) As Long
  Dim R&, G&, B&
  R = Colr Mod 256
  Colr = Colr \ 256
  G = Colr Mod 256
  Colr = Colr \ 256
  R = Colr Mod 256
  GrayScale = (77 * R + 150 * G + 28 * B) / 255
End Function


Private Sub Command1_Click()
    Dim I As Long, J As Long, Color As Long
    For I = 1 To Picture1.Height
        For J = 1 To Picture1.Width
            Color = GrayScale(Picture1.Point(I, J))
            Picture2.PSet (I, J), Color
        Next
    Next
End Sub



В Picture1 лежит цветное изображение, а в Picture2 - обработанное, ч/б (по крайней мере должно лежать)

Но почему-то не получается. Изображение почему-то красное. Почему?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 20.12.2004 (Пн) 11:44

Разумеется, ты ведь нигде не заполняешь B.
Замени в последней строке R = на B = .
Lasciate ogni speranza, voi ch'entrate.

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 20.12.2004 (Пн) 11:48

Заменил - результат без изменений. Может другой код посоветуешь?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 20.12.2004 (Пн) 11:50

Да нет, код правильный. Ищи опечатки в коде. Для ускорения советую использовать API (GetPixel/SetPixel).
Lasciate ogni speranza, voi ch'entrate.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 20.12.2004 (Пн) 11:51

Ах, да. Не Picture2.PSet (I, J), Color, а Picture2.PSet (I, J), RGB(Color,Color,Color).
Lasciate ogni speranza, voi ch'entrate.

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 20.12.2004 (Пн) 11:54

alibek писал(а):Ах, да. Не Picture2.PSet (I, J), Color, а Picture2.PSet (I, J), RGB(Color,Color,Color).


Всё работает. БОЛЬШОЕ спасибо!!!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.12.2004 (Вт) 8:07

FWIW, более быстрое преобразование тут: http://bbs.vbstreets.ru/viewtopic.php?t=11061
Изображение


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 34

    TopList