Kostik
Цвет скорее всего черный или в оттенках серого, поскольку для измерений цвет не нужен.
Прям таки и не нужен… ^__^ я “питонер” хилый но с C++ и Native C поработал солидно и с изображениями в т.ч.
Основной принцип измерения изображений, это присвоение пикселю изображения обусловленного рамера в натуральных еденицах измерения…
Здесь все зависит от dpi… но можно абстрагироваться пока и обусловиться что 1 пиксель - 1 мм
Потом посекторное чтение цветовых маркеров пикселей в определенной последовательности, например (на белом фоне черный квадрат ; весь холст 4x4 пикселей, а квадрат на нем 2x2 пикселей)
Действовать будем вот по такой логике:
1) Перебираем пиксели целевого изображения слева на право/сзнизу вверх (представь плоскости
x -|-
y, т.е. с минимального
y по
x),
Объявляем двухмерный массив (в Python нет массивов :) работать придется со списком)
н/п “square()” ; первая размерность массива - количество пикселей в холсте по высоте ; вторая размерность - 2 ;
Начинаем чтение анализ пикселей с самого верхнего левого пикселя - шаг один пиксель построчно ;
пока цвет белый - идем дальше, если черный то =>
сохраняем кординаты пикселя по
x в во вторую размерность текущего элемента массива в индекс 0, (это еще называют “касание”).
PS:по у мы идем т.е.
y у нас индекс первой размерности
далее перебераем пиксели пока они черные, как только появляется белый, то =>
сохраням координаты предыдущего пикселя по х во вторую размерность текущего элемента массива в индекс 1…
и т.д.
На выходе ты заимеешь вот такой массив
square{0}
–square(0,0) = nothing
–square(0,1) = nothing
square{1}
–square(1,0) = 2
–square(1,1) = 3
square{2}
–square(2,0) = 2
–square(2,1) = 3
square{2}
–square(3,0) = nothing
–square(3,1) = nothing
А уже из этого сам понимаешь что мы имеем… т.е если мы взяли за 1 пиксель - 1 мм
мы получилы изображение с шириной 2 пикселя и высотой 2 иными словами 2x2 мм
Хотя на практике используют очень извращенные алгоритмы, как правило так называемые “лавины”
PS: Применимо к твоей ситуации, использую такую логику можно получить результат с погрешностью, так как будет захватываться теневой контур…
Погрешность можно просчитать, а можно отсечь с помощью того-же цветового маркера…
Есть еще проблема с белыми вкраплениями, её тоже надо обдумать…
Вообщем… не так всё просто как кажется…