Как найти толщину рамки в изображении? Имеется изображение с рамкой (вся рамка - одного цвета), толщина рамки сверху, снизу, слева и справа различная. Необходимо найти толщину с каждой стороны. Подскажите, пожалуйста, алгоритм, по которому можно вычислить толщину рамки, если у нее не фиксированная длина. Сам пробовал так:for i in range(width): # Цикл идет СЛЕВА for j in range(height): # Цикл идет СВЕРХУ if not np.array_equal(img[i,j], border_color): # если вдруг пиксели стали не равны цвету рамки border[0] = i # граница СЛЕВА border[1] = j # граница СВЕРХУ Но таким образом я вычисляю координаты точки, где рамка заканчивается лишь слева-сверху. Всё бы хорошо, но даже зная эти координаты не доходит - как следовать дальше? Рамка-то с разных сторон имеет разную толщину. Нужно найти координаты справа-снизу? А как заставить цикл следовать по изображению в таком направлении? Я вообще на верном пути, или подход в корне неверный? Может, готовая функция какая-то для этого предусмотрена?
Для определения толщины рамки с каждой стороны на изображении, можно воспользоваться следующим алгоритмом:
Начните с точки в верхнем левом углу изображения и двигайтесь по горизонтальной (вправо) и вертикальной (вниз) оси, пока не достигнете границы рамки. Запомните координаты точек, где цвет меняется с цвета рамки на другой цвет.Повторите шаг 1 для точки в нижнем правом углу изображения, двигаясь в обратном направлении (влево и вверх), чтобы найти вторую границу рамки.Из найденных координат вычислите разность между ними по горизонтали и вертикали, чтобы определить толщину рамки с каждой стороны.
Для определения толщины рамки с каждой стороны на изображении, можно воспользоваться следующим алгоритмом:
Начните с точки в верхнем левом углу изображения и двигайтесь по горизонтальной (вправо) и вертикальной (вниз) оси, пока не достигнете границы рамки. Запомните координаты точек, где цвет меняется с цвета рамки на другой цвет.Повторите шаг 1 для точки в нижнем правом углу изображения, двигаясь в обратном направлении (влево и вверх), чтобы найти вторую границу рамки.Из найденных координат вычислите разность между ними по горизонтали и вертикали, чтобы определить толщину рамки с каждой стороны.Пример кода на Python:
import numpy as npimport cv2
# Загрузите изображение
img = cv2.imread('image.jpg')
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Определите цвет рамки
border_color = img[0, 0]
# Найти верхнюю левую границу рамки
top_left = np.where((img != border_color).all(axis=2))
top_border = min(top_left[0])
# Найдите нижнюю правую границу рамки
bottom_right = np.where((img != border_color).all(axis=2))
bottom_border = max(bottom_right[0])
# Вычислите толщину рамки
left_border = min(top_left[1])
right_border = img.shape[1] - max(bottom_right[1])
top_border_thickness = top_left[0][0] - top_border
bottom_border_thickness = bottom_border - bottom_right[0][0]
print(f'Толщина рамки сверху: {top_border_thickness}')
print(f'Толщина рамки снизу: {bottom_border_thickness}')
print(f'Толщина рамки слева: {left_border}')
print(f'Толщина рамки справа: {right_border}')
Этот код поможет вам определить толщину рамки с каждой стороны на изображении.