Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [VB6] сложение изображений 
:(
    Опции темы
iff
Дата 13.9.2009, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

Репутация: нет
Всего: 16



надо сделать три вещи:
1)наложить 2 изображения
2)сделать изображение чёрнобелым
3)сделать такай эффект, как будто изображение просматривается через цветной светофильтр
Итак, 1-ая задача я написал код (здесь изображение Picture1 и Picture2 накладываются друг на друга и выводятся на Picture3:
Код

Dim x As Integer
Dim y As Integer

Private Sub Timer1_Timer()
y = y + 1
If y > 2000 Then Timer1.Enabled = False
For x = 1 To 2000
Picture3.PSet (x, y), Picture1.Point(x, y) + Picture2.Point(x, y)
Next x
End Sub

Таймер используется потому, что если реализовать это циклом программа зависает на время его исполнения (интервал таймера=1)
В общем в 8-ой строчке нужно помянять вырожение, определяющее цвет точки. Просто сложить не получается (образуются дикие яркие цвета).
Ну со второй задочей я не знаю как справиться (незнаю какую операцию надо произвести со значением цвета, чтобы оно стало серого оттенка)
С третьей задачей наверно нужно так: как в 1-ом случае наложить 2 картинки (исходное изображение и просто цвет светофильтра)


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
Akina
Дата 14.9.2009, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(iff @  13.9.2009,  22:40 Найти цитируемый пост)
если реализовать это циклом программа зависает на время его исполнения (интервал таймера=1)

DoEvents()

M
Akina
Вопросы не имеют отношения к конкретному языку программирования.
Тема перенесена.



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Earnest
Дата 14.9.2009, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 7
Всего: 183



Цитата(iff @  13.9.2009,  22:40 Найти цитируемый пост)
2)сделать изображение чёрнобелым

Обычно за значение "серости" принимают яркость исходного пиксела. Яркость можно рассчитать по  такой формуле: B = (59*G + 30*R + 11*B)/100.




--------------------
...
PM   Вверх
Akina
Дата 14.9.2009, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(Earnest @  14.9.2009,  11:56 Найти цитируемый пост)
Обычно за значение "серости" принимают яркость исходного пиксела. Яркость можно рассчитать по  такой формуле: B = (59*G + 30*R + 11*B)/100.

Зачем изобретать велосипед? тем более что любая формула по определению некорректна, зависит от цветовых профилей... чуть что - ты виноват...
http://msdn.microsoft.com/ru-ru/library/sy...rtedbitmap.aspx - и все претензии к Майкрософту.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Pavia
Дата 14.9.2009, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 6.12.2008

Репутация: 11
Всего: 12



Цитата(Akina @  14.9.2009,  11:17 Найти цитируемый пост)
Зачем изобретать велосипед? тем более что любая формула по определению некорректна, зависит от цветовых профилей... чуть что - ты виноват...http://msdn.microsoft.com/ru-ru/library/sy...rtedbitmap.aspx - и все претензии к Майкрософту.

Что-то я не заметил там применения цветовых профилей. А на претензиях далеко не уедешь. 
А формула верна она учитывает особенности глаза. Конечно не на все 100% А профили мы не всегда можем учесть, не во всех источниках он указан. А после обработки профиль меняется, а эо не учитывается. Так что я бы не стал так критично к этому относится.
PM MAIL   Вверх
Akina
Дата 14.9.2009, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(Pavia @  14.9.2009,  15:58 Найти цитируемый пост)
Что-то я не заметил там применения цветовых профилей.

http://msdn.microsoft.com/ru-ru/library/sy...ts_members.aspx - указываем исходный и конечный PixelFormat, и хай его конвертирует.

Цитата(Pavia @  14.9.2009,  15:58 Найти цитируемый пост)
формула верна она учитывает особенности глаза.

Достаточно поменять температуру дисплея, чтобы формула стала иной. Потому не зря этих формул существует несколько (коэффициенты близки, но плавают), и каждая из них является верной.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Pavia
Дата 14.9.2009, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 6.12.2008

Репутация: 11
Всего: 12



Цитата(Akina @  14.9.2009,  15:13 Найти цитируемый пост)
указываем исходный и конечный PixelFormat, и хай его конвертирует.

Вы что цветовой профиль от формата пикселя отличить не можете?


Цитата(Akina @  14.9.2009,  15:13 Найти цитируемый пост)
Достаточно поменять температуру дисплея, чтобы формула стала иной. 

А дисплей то тут причем? Глаз по другому работать не будет. Как он воспринимал определенные частоты так и будет. Это при отображении надо учитывать особенности дисплея. А тут мы говорим о внутреннем представлении цвета с учетом особенности модели RGB.
PM MAIL   Вверх
iff
Дата 14.9.2009, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

Репутация: нет
Всего: 16



Дело в том, что я так и не понял где взять численные значения R, G, B? Как мне кажется, в визуал бэйсеке цвет обозначается одним шестнадцатиричным числом. Например: &H008080FF&(розовый), &H000000FF&(красный), &H00800080&(тёмно-фиолетовый). Такие числа нужно переделывать
А) в числа, обозначающие серый оттенок цвета (т.е. черно-белый)
б) взять 2 таких числа (цвета), произвести над ними алгебраические операции и получить новое число, обозначающие такой цвет, какой бы получился при наложении 2 исходных цветов
в) переделать (при помощи алгебраических операций) цвет в такой, который был бы таким, как будто его видно через светофильт (например через красный). Т.е. В этом случае белый превращается в красный, серый - в тёмно красный... В общем здесь нужно "подавить" все цвета кроме красного. Если бы цвет был в формате RGB, то всё было-бы просто (G и B равно нулю и всё)


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
ELie
Дата 16.9.2009, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 16.9.2009

Репутация: нет
Всего: нет



конвертация изображения в ч/б с коэфициентами принятыми в телевидении

Код

Private Sub Command1_Click()
Dim b1 As Byte, b2 As Byte, b3 As Byte
Dim lColor&, x&, y&, Gray!
Pic2.Cls
For x = 0 To pic1.ScaleWidth
For y = 0 To pic1.ScaleHeight
lColor = pic1.Point(x, y)
b1 = lColor And &HFF 'Красный
b2 = (lColor \ 256) And &HFF 'Зеленый
b3 = (lColor \ 65536) And &HFF 'Синий
Gray = b1 * 0.3 + b2 * 0.59 + b3 * 0.11
lColor = RGB(Gray, Gray, Gray)
Pic2.PSet (x, y), lColor
Next y
DoEvents
Next x
End Sub


п.с. scalemode для пикчербоксов - пиксель
PM MAIL   Вверх
iff
Дата 16.9.2009, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

Репутация: нет
Всего: 16



Спасибо, на я уже решил эти 3 задачи. Честно говоря, я вообще не пользовался коэффициентами. Просто находил значение R, G, B, складывал их и делил на 3 (среднее арифметическое), затем и R, и G, и B равнялись полученному числу.


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.1270 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.