![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
loginrl103 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 26.9.2008 Репутация: нет Всего: нет |
Имеется с десяток битмапов (примерно 80 х 80) и большой изображение (1000 х 1000). Надо за минимальное время найти все битмапы на изображении; на изображении битмапы могут быть повёрнуты.
Хотелось бы узнать какие библиотеки способны такое сделать (быстро), и можно код. ![]() ps. гугл выдал кучу ссылок на обработку изображений, но какие реально быстро работают из них не узнать( |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
корелляцию посчитай в окне 80х80
|
|||
|
||||
Курсант |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 338 Регистрация: 21.2.2009 Где: Балашиха или Воро неж Репутация: нет Всего: 4 |
Есть у меня что то похожее, но на Делфи, битмапы не повернутые, и еще учитывается прозрачность фона искомого битмапа (то есть там где у искомого битмапа белый цвет на большом битмапе может быть любая точка). Писал давно, точно как работает не помню, можете попробовать разобраться сами... Насчет скорости не уверен я - для 80-ти то битмапов это в любом случае не меньше минуты будет... Что касается повернутости битмапов - попробуйте поискать сначала неповернутые, потом поверните искомые битмапы и поищите их, и так три раза... Разумеется битмапы должны быть повернуты на угол кратный 90 градусов...
Программка охотилась за меня на монстров в онлайн игре, искала их на экране по подписи под ними и щелкала мышкой в монстра, то есть нападала на него... В общем может чем нить будет полезно Вам... Ваша задача - заменить загрузку изображения с экрана загрузкой из файла, убрать учет прозрачности фона и изменить размерности массивов... Учтите также, что при x>1000-80 и y > 1000 - 80 искать битмап бесполезно, потому что он не поместится на большом битмапе - выйдет за рамки...
Это сообщение отредактировал(а) Курсант - 25.2.2009, 21:51 |
|||
|
||||
loginrl103 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 26.9.2008 Репутация: нет Всего: нет |
Есть ещё такой вариант - разбиваем большое изображение на n квадратов, для каждого из них считаем какие-то средние величины (цвета, полутона, что там ещё), тоже заранее проделываем для битмапов, затем каждый квадрат сравниваем по нескольким просчитанным значениям (+/- несколько %) с этими параметрами для битмапов..Хм...что скажите? Конкретные величины и результаты работы с ними хотелось бы услышать).
|
|||
|
||||
Курсант |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 338 Регистрация: 21.2.2009 Где: Балашиха или Воро неж Репутация: нет Всего: 4 |
loginrl103, не прокатит. и с корелляцией тоже имхо не прокатит... Тебе алгоритм поиска нужен, что то вроде алгоритма Кнутта-Морриса-Пратта... Говорю же, выдергивай себе процедуры из того кода который я тебе дал, там похожий по смыслу алгоритм поиска реализован, адаптируй под себя, и используй.. Хочешь - исходные битмапы крути, хочешь - алгоритм оптимизируй...
Это сообщение отредактировал(а) Курсант - 26.2.2009, 16:50 |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
все зависит от того какие картинки, общими методами такие задачи не решаются
|
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
солидарен! -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |