Это больше геометрическая проблема, чем проблема Opencv.
Допустим, вы знаете все прямоугольники для изображения, имеющего размер 1000X1000, и давайте представим, что прямоугольники rec1 = ([0,0],[100,100])
и rec2 = ([50,50],[90,90])
([y1,x1],[y2,x2])
.
Хорошо, теперь давайте представим, что у вас есть другое изображение в форме 1255X1300, и вы хотите нарисовать такие же прямоугольники на этом новом изображении относительно старого.
Что вынужно найти соотношения x и y между двумя изображениями и применить эти отношения к изображениям.Или вы можете выразить свой прямоугольник относительным образом.
Рассчитать соотношение:
Чтобы вычислить соотношение между двумя изображениями, просто разделите его размеры x и y:
x_ratio = x_new/x_old
y_ratio = y_new/y_old
В нашем случае это будет:
x_ratio = 1.300 y_ratio = 1.255
Теперь вы применяете эти отношения к прямоугольникам и округляете ихценности.Вы просто умножаете x прямоугольника на x_ratio и y прямоугольника на y_ratio и округляете значения (имейте в виду, что при округлении он теряет немного точности)
Относительные прямоугольники:
Вы также можете представить прямоугольники относительно первого изображения, разделив его соответствующие размеры.Относительные прямоугольники должны выглядеть следующим образом: rel_rec1 = ([0.,0.],[0.1,0.1])
, rel_rec2 = ([0.05,0.05],[0.09,0.09])
Затем, чтобы узнать абсолютные значения прямоугольников в новом изображении, вам просто нужно умножить относительные прямоугольники на размеры нового изображения и округлитьзначения, например
new_rec2 = ([0.05*1255,0.05*1300],[0.09*1255,0.09*1300])
Надеюсь, это помогло