|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
06.02.2010, 01:55 | #1 |
Пользователь
Регистрация: 03.02.2010
Сообщений: 38
|
Работа с пикселями на канве
Проблема с отбором пикселей на канве по коду его цвета. Вот задача: нужно на изображении *.bmp глубиной 24. по клику мышки определять код цвета пикселя по которому был клик, и потом пробежаться по изображению и закрасить все пиксели у которых не такой код в любой цвет, тоесть оставить только нужные пиксели. я делаю все вот так: определение цвета пикселя по которому был клик
Код:
Код:
подскажите пожалуйста не опытному. У нас принято оформлять код специальным тэгом - при помощи кнопочки "#". Только... И не значком #. И не РНР-кодом. И не значком цитаты. И не собственными "ручками". Рекомендую. Помимо общих правил форума есть и дополнения к ним в каждом разделе... Модератор Последний раз редактировалось mihali4; 07.02.2010 в 22:23. |
06.02.2010, 14:30 | #2 |
Регистрация: 26.03.2009
Сообщений: 2
|
При определении координат пикселя (относительно имиджа) нужно использовать методы Image1
Код:
Чтоб узнать цвет пикселя используйте либо методы канвы имиджа либо контекст Dc := Image.Canvas.Handle. А вы получается для всего экрана. Ну либо тогда координаты надо тоже экранные. Проще всего так Код:
Dc := Image.Canvas.Handle т.е. вот так проверяйте Код:
|
06.02.2010, 18:18 | #3 |
Пользователь
Регистрация: 03.02.2010
Сообщений: 38
|
Спасибо большое!!! исправил.
А как полученый код можно в RGB перегнать??? Код:
У нас принято оформлять код специальным тэгом - при помощи кнопочки "#". Только... И не значком #. И не РНР-кодом. И не значком цитаты. И не собственными "ручками". Рекомендую. Помимо общих правил форума есть и дополнения к ним в каждом разделе... Модератор Последний раз редактировалось mihali4; 07.02.2010 в 22:24. |
07.02.2010, 22:13 | #4 |
Пользователь
Регистрация: 03.02.2010
Сообщений: 38
|
Подскажите пожалуйста как теперь можно избавиться от шума который образовался во время анализа image на определенный код цвета. то есть есть нужная зона которая должна остаться и есть несколько островков такого же цвета, их надо закрасить.
Вопрос: подскажите как отличить шум от нужной зоны, цвет у них один и тот же просто густота и размер разный. Последний раз редактировалось mihali4; 07.02.2010 в 22:24. |
07.02.2010, 23:03 | #5 |
Пользователь
Регистрация: 03.02.2010
Сообщений: 38
|
Спасибо уважаемый модератор в дальнейшем буду придерживаться этих правил.
|
07.02.2010, 23:23 | #6 |
Ra-Ra ?
Форумчанин
Регистрация: 06.03.2008
Сообщений: 286
|
Ну есть дурацкая идея, по краям твоего "островка" сделать зачистку 5-6 пикеселей, а потом все изображение пройтись по горизонтали от самого верха до твоего островка. Потом также от самого низа вверх до твоего островка или от островка вниз, не важно. И аналогично по бокам. А "зона зачистки" просто нужна чтобы в получившемся квадрате не осталось кусочков каких-нибуть.
|
07.02.2010, 23:43 | #7 |
Пользователь
Регистрация: 03.02.2010
Сообщений: 38
|
Спасибо за идею но она не подходит, так как нужно что бы програма делала зачистку от шума по нажатию кнопки, а как прога отличит край шума от края нужной зоны, и как она поймет от чего нада пробегаться вверх и вниз влево и вправо, у них же цвет один.
У меня есть идея я только не знаю как ее реализовать: нужно по количеству пикселей определять нужную зону от не нужной, только как это реализовать я не могу понять. |
07.02.2010, 23:49 | #8 |
Ra-Ra ?
Форумчанин
Регистрация: 06.03.2008
Сообщений: 286
|
Вообще непонятно что вам надо 8) Если вам нужно оставить только некоторый выбранный участок(по цвету), который вы сами выбираете. То намного проще определить этот участок, и перерисовать на битмап чёрного цвета а потом его вывести.
Идея примерно такая: после нажатия мышки, определяется цвет, и перемещаемся вправо до границы с другим цветом, потом по часовой стрелке, как граница замкнётся, всё внутри заливаем этим же цветом и выводим. |
08.02.2010, 00:00 | #9 |
Пользователь
Регистрация: 03.02.2010
Сообщений: 38
|
Извините если я не очень ясно выразил свою проблему. Проблема такова: Нужно на фото по цвету определить лицо человека (кликаем мышкой узнаем код пробегаем по канве закрашиваем лишние)
Код:
Последний раз редактировалось koshel; 08.02.2010 в 00:03. |
08.02.2010, 00:19 | #10 |
Ra-Ra ?
Форумчанин
Регистрация: 06.03.2008
Сообщений: 286
|
Если, чистить все кусочки которые меньше определённого размера. Проходите построчно, попадается пиксель цвета лица, обшариваем его вокруг, если во время проверки радиус не большой то закрашиваем все точки которые нашли, если начинает превышать в ходе проверки то двигаемся дальше. А вообще поищите алгоритмы, думаю в интернете найдётся множество решений.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
цвета на канве | Juffin | Общие вопросы Delphi | 3 | 17.05.2009 21:57 |
Проблема с пикселями!!! | ТРОЯН=) | HTML и CSS | 1 | 13.03.2009 01:34 |
поиск по канве | Bayazet | Мультимедиа в Delphi | 3 | 28.01.2009 14:52 |
Реализация работы с пикселями: | ritm | Общие вопросы Delphi | 15 | 12.01.2009 16:59 |
Мерцание на Канве | SERG1980 | Мультимедиа в Delphi | 3 | 30.04.2008 08:14 |