Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Немного был знаком с Delphi, сейчас уже подзабыл все.

Хочется немного потренироваться, заодно создав небольшую прикладную програмку.

Если что-то не реализуемое упомянул - поправьте. Если что-то можно сделать лучше - предложите.

Программа будет искать множество предварительно загруженных изображений на экране

и если найдет - показывать их координаты.

2 тестовых изображения (bmp) для поиска - загружать при FormCreate.

Скриншот и поиск изображений делать по таймеру, раз в 500мс.

Если найдено, то пока в Edit1 показывать какое изображение найдено (номер) и по каким координатам.

В Edit2 показать: Сколько мс занял процесс скриншота и поиска изображений.

Сделать скриншот и найти изображения сравнивая по точкам - это я могу. Но хочется получить хорошую скорость:

- ускорить поиск путем сравнения меньшего количества данных (упростив цветовую схему)

- не использовать медленный TBitMap.ScanLine при поиске, а конвертировать изображения в массивы и работать с ними

- при поиске изображений использовать указатели для перемещения по массиву, чтобы не вычислялся каждый раз адрес

- при конвертации скриншота в массив использовать указатели для перемещения по массиву

- не использовать медленный ScanLine для скриншота

Нужен исходник для Delphi не выше версии 10.4.

VCL Forms Application.

Примерно что надо:

type TBmpArray = record

  w : Integer; // ширина

  h : Integer; // высота

  bmp : array of Byte; // набор цветов точек

end;

var

  array_scr : TBmpArray; // скриншот

  array_f1 : TBmpArray; // предварительно загруженное и преобразованное изображение 1

  array_f2 : TBmpArray; // предварительно загруженное и преобразованное изображение 2

Функции:

// Запись в array_scr скриншота первичного дисплея

// один байт - одна запись в TBmpArray.bmp - одна цветная точка (pf8bit)

// Текущая цветовая схема экрана может быть любой, но на выходе всегда pf8bit

function ScreenShot(указатель на array_scr):boolean;

// Чтение и преобразование BMP файла в array_f1

// один байт - одна запись в TBmpArray.bmp - одна цветная точка (pf8bit)

// цветовая схема файла может быть любой, но не менее 256 цветов, а на выходе всегда pf8bit

function ReadBmpToArray(указатель на array_f1):boolean;

// Поиск прямоугольного изображения в массиве 1 в прямоугольном изображении массива 2, например array_f1 в array_scr

// учитывать размеры прямоугольников, то есть если прямоугольник уже не может уместиться по горизонтали - искать со следующей строки

// или если не умещается уже по вертикали - прекратить поиск

// на выходе - boolean, то есть нашлось или нет

// если нашлось, то в R - координаты найденного изображения

function SearchRectangle(указатели на массивы; var R:TRect):boolean;

Материалы в помощь:

Как не перегонять Bitmap в массив медленно:

habr.com/ru/post/196578/

Похоже на быстрый скриншот вроде:

delphimaster.net/view/8-1178055969

3 года назад
Petrovich_74
Сергей 
50 летРоссия
17 лет в сервисе
Был
2 года назад
  • Похожие заказы
  • Надо написать пайтон скрипт, который с помощью библиотеки Telethon будет получать данные в телеграмме, и заносить их в Google Docs с помощью [url=https://www.fl.ru/a.php?href=https%3A%2F%2Fdevelopers.google.com%2Fdocs%2Fapi%2Fquickstart%2Fpython]developers.google.com/doc...[/url] Описываю шаги, которые будет выполнять этот скрипт: 1. Получаем список участников группы по ссылке.  Всех добавляем ...

    Закрыт
    3 года назад
  • $100

    Курсовая работа! Требуется разработать "Программное средство учета заказов и услуг на станции техобслуживания автомобилей". Грубо говоря автосервис. язык C++, база данных MS SQL Server. Разработка в среде программирования Embarcadero RAD Studio (Builder C++). Десктопное приложение с формами, где ...

    Закрыт
    3 года назад
  • 1. Есть ссылка номера отслеживания посылки клиента на Белпочте - https://webservices.belpost.by/searchRu/vv311651155by  Он попадает в гугл таблицу  https://docs.google.com/spreadsheets/d/1lsQLeyRaJN5-c2_vntk7c1DHFed2vFeUUS_gbt-VEeA/edit#gid=277578331 Смотрите на примере 3 строки Задача 1. Чтобы после появления ссылки номера отслеживания посылки в гугл таблицах в столбце A(Статус) - Статус ...

    Закрыт
    3 года назад
  • $7

    Программа, которая использует заголовок IP/TCP в качестве стеганографического контейнера. Модифицирует поля заголовков для создания канала скрытой передачи данных. Работа нужна в рамках выполнения курсового проекта.

    Закрыт
    3 года назад
  • Нужно настроить парсеры цен на домены написанные на Python 3.9 с использованием библиотек Requests и Beautiful soup. Для каждого хостера есть свой парсер, который сохраняет список доменов и цены в csv файл.   Домены должны быть ...

    Закрыт
    3 года назад
  • $30

    По teamviewer или anydesk рассказать и показать как поднять сервер websocket. На библиотеке signalr или аналогичной. Цену указал за час консультаций.

    Прикладное ПОнет заявок
    Закрыт
    3 года назад
  • $2500

    Долгосрочный проект по Java. Опыт использования технологий Spring, Hibernate.  The project is on and we are looking for extra developer on 40 h/week. Опыт от 2х лет.  Fixed salary - $2500 C2H - contract с последующим переходом на постоянную ...

    Закрыт
    3 года назад
  • Есть программа (.exe, несколько .dll, .cfg и папки с .txt). Программа выдается удаленным сотрудникам. Нужно исключить возможность использования программы без нашего ведома. Нужна оболочка для exe файла с паролем. Пароль будет меняться раз в сутки (вручную записываться ...

    Закрыт
    3 года назад