Я хочу сделать автоматические c кадрирования набора данных спутниковых изображений. Каждые данные представляют собой 4-мерное 32-битное изображение (на самом деле полосы находятся в отдельных файлах, но я хочу объединить их в один тензор).
im_array = cv2.imread(path, cv2.IMREAD_UNCHANGED) plt.pcolormesh(im) plt.axis('equal') plt.colorbar() plt.show() plt.close()
Участок изображения (одна полоса)
И мне нужно что-то вроде:
Желаемый результат
Я пробовал несколько подходов, используя cv2.minAreaRect() и cv2.findCountours(), но я всегда застреваю на каком-то этапе, когда выскакивает ошибка с форматом изображения или количеством каналов.
cv2.minAreaRect()
cv2.findCountours()
Если вы, ребята мог бы сказать мне хороший подход к решению этой проблемы. Я ценю это.
Вот скриншот с данными (все четыре полосы). Я буду использовать их в алгоритме машинного обучения, чтобы сделать регрессор.
Четыре полосы
Вот некоторые ссылки, которые я просмотрел: Как выпрямить повернутую прямоугольную область изображения с помощью OpenCV в Python? OpenCV Python: рисовать minAreaRect (RotatedRect не реализован)