У меня есть различные пересекающиеся прямоугольники, которые нарисованы на изображении, как это:Как совместить перекрывающиеся прямоугольники в Python
Я хотел бы объединить эти прямоугольники таким образом, что только берутся внешние большинство прямоугольников. Например, один прямоугольник для computer.org/webinars/Agile2
и один для FREE WEBINAR
и т.д.
Как я рисую прямоугольники это:
import cv2
import numpy as np
.....
for rect in rects_new:
#print (str(type(rect))) #<class 'numpy.ndarray'>
#print (rect.area()) # gives error that 'numpy.ndarray' object has no attribute 'area'
cv2.rectangle(vis, (rect[0],rect[1]), (rect[0]+rect[2],rect[1]+rect[3]), (0, 255, 255), 2)
Я наткнулся на этот ответ https://stackoverflow.com/a/24061475/44286 и этот ответ http://answers.opencv.org/question/67091/how-to-find-if-2-rectangles-are-overlapping-each-other/?answer=67092#post-id-67092, что наводит на мысль OpenCV обеспечивает пересечение из двух прямоугольников с &
. Однако я не могу это сделать в python. Когда я вызываю метод area
, я получаю сообщение об ошибке (как показано в приведенном выше фрагменте).
Вопрос
Как я могу объединить прямоугольники таким образом, что, когда прямоугольники накладываются друг на друга, то только внешний самый прямоугольник берется. Я хотел бы решить его в python, используя OpenCVs, предоставленный прямоугольник, пересекающий &
. Как упоминалось в этой документации http://docs.opencv.org/3.1.0/d2/d44/classcv_1_1Rect__.html#gsc.tab=0, а также упоминается в связанном ответе, опубликованном выше.
Что делать, если вы 'cv.fromarray (Rect) .area()'? – Boud
@Boud 'AttributeError: module 'cv2' не имеет атрибута 'fromarray'' – Anthony
@Boud У меня нет ничего, что является' cv' в моем коде. Я пробовал делать 'np.fromarray', но получил ошибку' module 'numpy' не имеет атрибута 'fromarray''. Поскольку у меня нет ничего, что определено как 'cv', когда я делаю' cv.fromarray', я получаю ошибку 'name 'cv' не определен'. Я обновил вопрос с помощью моего импорта – Anthony