Opencv: объединить пересекающиеся контуры в большие прямоугольники

#opencv #opencv-contour

#opencv #opencv-контур

Вопрос:

Я хотел бы нарисовать большой прямоугольник вокруг красных предложений красного цвета, как на прикрепленном изображении. Я смог нарисовать несколько прямоугольников вокруг каждого символа. Возможно ли объединить пересекающиеся прямоугольники в один большой прямоугольник?

Вот мой код:

 image = cv2.imread('test-opencv.png')
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
lower = np.array([0, 50, 20])
upper = np.array([5, 255, 255])
mask = cv2.inRange(hsv, lower, upper)
cv2.imwrite('mask3.jpg', hsv)

# Gen lower mask (0-5) and upper mask (175-180) of RED
mask1 = cv2.inRange(hsv, (0, 50, 20), (5, 255, 255))
mask2 = cv2.inRange(hsv, (175, 50, 20), (180, 255, 255))

# Merge the mask and crop the red regions
mask = cv2.bitwise_or(mask1, mask2)
croped = cv2.bitwise_and(image, image, mask=mask)

ret, thresh = cv2.threshold(mask, 0, 255, 0)
contours, hierarchy = cv2.findContours(thresh, 3, 5)

for cnt in contours:
    x, y, w, h = cv2.boundingRect(cnt)
    image = cv2.rectangle(image, (x, y), (x w 10, y h 10), (0, 255, 0), 2)

cv2.imshow("mask", image)
cv2.waitKey()
 

Вот также исходное изображение
Исходное изображение

Изображение после использования OpenCV

Комментарии:

1. пожалуйста, также загрузите исходное изображение

2. @sturkmen пожалуйста, проверьте