• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Измерение растояния в мм на Bmp картинке

  • Автор темы SomlicH
  • Дата начала
S

SomlicH

В общем задача такова, загружается в программу bmp файл в TImage и в нем есть некоторый обект который нужно измерить. Пользователь мышкой растягивает линию и программа в зависимости от длины линии пишет размер данного объекта в мм. Расширение картинки 640-480, что узнать количество пикселей на мм можно в кадр засунуть шаблон с заранее известным размером и по нем уже расчитать отношение мм/пиксели.

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

Заранее спасибо за ответ.
 
Z

zubr

1. Определяешь контекст устройства (дисплея): hdc:=GetDC(0);
2. Определяешь горизонтальное соотношение пиксель /мм: kh:=GetDeviceCaps(hdc, HORZRES)/GetDeviceCaps(hdc, HORZSIZE);
3. Определяешь вертикальное соотношение пиксель/мм: kv:=GetDeviceCaps(hdc, VERTRES)/GetDeviceCaps(hdc, VERTSIZE);
Используя коэффициенты переводишь мм в пиксели.
 
S

SomlicH

Извините, но какой смысл имеют параметры kh:=GetDeviceCaps(hdc, HORZRES)/GetDeviceCaps(hdc, HORZSIZE);
и kv:=GetDeviceCaps(hdc, VERTRES)/GetDeviceCaps(hdc, VERTSIZE);

Если я их определяю у меня получается одно число - 3,79 что оно обозначает и как его приписать до моей идеи???

Может я не понятно объяснил, но тема такова с видео источника я захватываю картинку в формате BMP и каждые 10мин я их сохраняю на винте, в кадре есть монета, размер которой я знаю вне зависимости от масштаба и увеличения. Таким образом я могу щелкнув мышкой в двух ее крайних точках и собственно расчитав длину линии полученной между этими двумя точками расчитать отношение мм к пикселям.
ПРоблема в том как сделать "РЕЗИНОВУЮ" линию, которая тянулась бы за мышкой при ее перемещении. Тогда при отпускании я бы засек координаты и уже расчитав по известному соотношению выдал бы результат.

В принципе программа предназначена дя того чтобы контролировать троцесс прорастания семян, т.е. каждые 10 мин нужно измерять длину проростка. Я думал делать это вышеописанным способом. Но теперь есть идея. Может просто сделать попиксельное сканирование картинки сохранить в массив все точки с их цветами, а потом посто анализировать изменение цвета фона (он белый) на зеленый или около того и просто делать контур и уже както расчитывать это математически????

Но с меня сильный математик не очень, может у кого-то есть идеи.

З.Ы. В кадре около 10 семян, в день более 100 фотографий конечно вручную измерить все это очень тяжело, математический подход был бы очень желательный!!!
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!