| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Алгоритм выделения объектов из BMP 1bit файла |
| Автор: Pcrepair 29.8.2011, 19:37 |
| Добрый день! Вопросы к программистам, хорошо знающим работу с графикой Исходные данные: - есть test1.bmp (1bit, черный цвет -фон, белый цвет - значащий) - размеры файла 1280х1024 пик (скрин экрана дисплея) - в изображении есть символы и геометрические фигуры Задача: - сгенерировать BMP 1bit файлы 1280х1024 пик из исходного test1.bmp, в количестве равном общему числу символов и фигур в исходном файле - в каждом новом файле должна быть только один символ или фигура, остальным присвоен цвет = черный - фигурой или символом считать совокупность пикселей имеющих между собой контакт - каждый новый файл должен иметь свое имя (координаты первого пикселя символа или фигуры - верхний левый, типа 23-57.bmp) и быть записн на ЖД в том же каталоге Хотелось бы обсудить, с теми кто знает, алгоритмы работы такой программы если есть примеры кода на ДЕЛФИ, хорошо бы взглянуть Заранее спасибо всем! |
| Автор: VictorTsaregorodtsev 29.8.2011, 20:35 |
| Это не задача на графику, а задача на владение языком (или библиотекой VCL) и алгоритмами. Если разрешено пользоваться классами из VCL - то можно не заморачиваться с побитовыми операциями (можно поставить TBitmap.PixelFormat=pf32bit и получить возможность работать с байтовой кодировкой цвета, когда цвету будет соответствовать не бит, а байт или четырехбайтовое целое - в общем, смотря как потом условие писать). И финальные битмапы можно создавать в памяти как многоцветные (чтобы не париться с битовыми операциями), а перед записью в файл менять им формат на однобитовый. Ну а поиск фигур - это придётся писать вручную. Я в текущем проекте написал подобное без проблем (мне надо было удалять с картинки "кляксы", чей размер меньше заданного числа пикселов, а крупные кляксы-фигуры оставлять). Могу написать за денежку. Но я, правда, работаю с С++ Билдером, поэтому трансляция сишного кода в паскаль у меня затянется (и денежку я запрошу за суммарное время написания-отладки кода на С++ и последующий перевод кода на паскаль, с которым давно не работал). Билдер включает в себя дельфийский компилятор с паскаля, поэтому пас-код будет транслироваться без ошибок, я это проверю ;) |
| Автор: Pcrepair 29.8.2011, 20:55 |
| классы не нужны, вся программа - форма с кнопкой, при нажатии - кушает тестовый файл в том же каталоге - генерирует файлы с символами и записывает их на диск - ждет следующего нажатия на кнопку это тестовая программа - кусочек, для определения всего алгоритма обработки, там еще много чего будет |
| Автор: VictorTsaregorodtsev 30.8.2011, 15:27 |
Я не про то. Либо можно задействовать TBitmap (т.е. высокоуровневые возможности чтения картинки из файла и записи её в файл, возможности доступа к строкам пикселов через ScanLine,...) - либо все перечисленные в скобках вещи надо будет писать на чистом паскакале. ЗЫ. Всё, больше не буду возвращаться в тему (в прошлом письме написал, что я сишник). Кому что надо - в личку или в мыло. |