Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2011, 06:44   #1
Biohazard
Пользователь
 
Регистрация: 23.02.2009
Сообщений: 78
По умолчанию Чёрный холст и фигуры

Как на чёрном холсте битмапа найти области с фигурами и выдать их координаты с шириной и высотой, или одну общую область в которой находятся эти фигуры. и всё это меньше чем за 1/10 секунды( холст может быть размера экрана.

ну или получить за 1/10 сеунды координаты всех не чёрных пикселей с их колором)
Изображения
Тип файла: jpg Безымянный.JPG (13.3 Кб, 179 просмотров)

Последний раз редактировалось Biohazard; 03.02.2011 в 07:18.
Biohazard вне форума Ответить с цитированием
Старый 03.02.2011, 09:27   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Решить задачу можно анализируя содержимое пикселей, но за указанное время наверно слабо этим методом, поскольку очень медленный доступ к пикселям
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.02.2011, 09:58   #3
Biohazard
Пользователь
 
Регистрация: 23.02.2009
Сообщений: 78
По умолчанию

таким способом да, долго( может есть какой то аналитический?
Biohazard вне форума Ответить с цитированием
Старый 03.02.2011, 11:43   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Без анализа пикселей наврядли возможно решение. Не знаю есть ли в Win Api средства, которые быстро вернут массив пикселей Bitmap-а в обход методов компонента.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.02.2011, 11:46   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а ScanLine на что?
или на крайняк на апи работайте с DIBitMaP.(DIB)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.02.2011, 11:54   #6
Biohazard
Пользователь
 
Регистрация: 23.02.2009
Сообщений: 78
По умолчанию

сканлайн не так уж и быстра( а на апи, поподробнее можно?)
Biohazard вне форума Ответить с цитированием
Старый 03.02.2011, 11:57   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

я не думаю что у вас получится перебрать весь ваш холст за 1/10 секунды.
для холста в 800/600 пикселей это 800*600 операций сравнения(и то если холст хранится как 24битный битмап, то скорость упадет еще ниже)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.02.2011, 12:14   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Можно попробовать функцию GetDIBits (в Graphics.pas есть примеры обращения). На счет скорости согласен с Пепел Феникса
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.02.2011, 12:22   #9
Biohazard
Пользователь
 
Регистрация: 23.02.2009
Сообщений: 78
По умолчанию

если холст перевести в текст и искать первую тройку не чёрного цвета? мне ведь для задачи достаточно найти хотяб минимальный прямоугольник, куда входят все фигуры) тоесть как бы отрезать лишнее вокруг)
Biohazard вне форума Ответить с цитированием
Старый 03.02.2011, 12:30   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

что за глупости с текстом?
вам все равно придется каждый пиксель обрабатывать(каждый символ если в тексте, хотя смотря как перевести)
поэтому кроме предложеных вариантов я других не вижу.
вообще советую чтоб битмап был или 16-ти битный или 32-ых битный(первое по теории быстрее) ну иль хотя б 8-битный.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фигуры Арнис Фриланс 4 25.01.2011 13:05
Не регистрируют на форуме из-за внесения в какой-то чёрный список. chugunka Безопасность, Шифрование 8 17.12.2010 05:10
Появляется чёрный экран при запуске windows 7 Legolender Windows 4 21.11.2010 15:08
чёрный ящик comeoff Помощь студентам 4 17.01.2010 10:16
Чёрный список Оперы Altera Софт 2 24.09.2008 19:12