Форум программистов CODEBY.NET Хостинг в Беларуси — Active Technologies

Разработка бизнес сайтов

Нужны клиенты? Тогда сюда быстрее...
X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )




> Измерение растояния в мм на Bmp картинке
SomlicH
Вставить ник
сообщение 17:03:2008, 05:20
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 19
Регистрация: 12:02:2006
Пользователь №: 2 933
Специализация: Delphi, локальные сети.



Репутация: - 0 +


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

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

Заранее спасибо за ответ.
Подняться вверх 
 
Сообщение #1
 
Новая тема 
Ответов (1 - 2)
zubr
Вставить ник
сообщение 17:03:2008, 08:02
Цитата Ответить 


Божественный
*****

Группа: Модеры
Сообщений: 904
Регистрация: 19:11:2003
Пользователь №: 133



Репутация: - 11 +


1. Определяешь контекст устройства (дисплея): hdc:=GetDC(0);
2. Определяешь горизонтальное соотношение пиксель /мм: kh:=GetDeviceCaps(hdc, HORZRES)/GetDeviceCaps(hdc, HORZSIZE);
3. Определяешь вертикальное соотношение пиксель/мм: kv:=GetDeviceCaps(hdc, VERTRES)/GetDeviceCaps(hdc, VERTSIZE);
Используя коэффициенты переводишь мм в пиксели.
Подняться вверх 
 
Сообщение #2
SomlicH
Вставить ник
сообщение 17:03:2008, 12:06
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 19
Регистрация: 12:02:2006
Пользователь №: 2 933
Специализация: Delphi, локальные сети.



Репутация: - 0 +


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

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

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

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

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

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


Быстрый ответ  Ответить  Новая тема 

> Быстрый ответ
Полужирный
Курсив
Подчеркнутый
Вставить изображение
Смайлики
Цитата
Код
 
 Отправлять уведомления об ответах на e-mail |  Включить смайлики |  Добавить подпись
   

 

RSS Текстовая версия Сейчас: 6:07:2008 - 00:37
с нами можно связаться по:
телефону: +375-(29)-632-60-67
e-mail:info@codeby.net