import cv2
import numpy as np
org_img = cv2.imread('a.jpg')
h,w,_ = org_img.shape
blur = cv2.GaussianBlur(org_img, (19, 19), 0)
blur_coppy = cv2.GaussianBlur(org_img, (29, 29), 0)
mask = cv2.inRange(blur, (110,110,150),(180,180,260))
img = cv2.bitwise_and(org_img, org_img, mask=mask)
k = cv2.getStructuringElement(cv2.MORPH_RECT, (1,1))
# 열림 연산 적용 ---②
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, k)
# 닫힘 연산 적용 ---③
closing = cv2.morphologyEx(opening, cv2.MORPH_CLOSE, k)
gray = cv2.cvtColor(closing, cv2.COLOR_BGR2GRAY)
ret, thresh1 = cv2.threshold(gray,125,255, cv2.THRESH_BINARY)
contours, hierarchy = cv2.findContours(thresh1, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
sorted_ctrs = sorted(contours, key=lambda ctr: cv2.boundingRect(ctr)[0])
for i, ctr in enumerate(contours):
if cv2.contourArea(contours[i]) >10000:
x, y, w, h = cv2.boundingRect(ctr)
roi = org_img[y:y + h, x:x + w]
# cv2.rectangle(org_img, (x, y), (x + w, y + h), (255, 255, 255), 1)
# cv2.imshow('{}.png'.format(i), roi)
#--- paste ROIs on image with white background
blur_coppy[y:y+h, x:x+w] = roi
# cv2.rectangle(org_img, (x, y), (x + w, y + h), (255, 0, 0), 4)
# cv2.drawContours(img, [contours[i]], 0, (0, 0, 255), 2)
# cv2.putText(img, str(i), tuple(contours[i][0][0]), cv2.FONT_HERSHEY_COMPLEX, 0.8, (0, 255, 0), 1)
# cv2.imshow("src", img)
# cv2.waitKey(0)
cv2.imshow("src", blur_coppy)
cv2.waitKey(0)
cv2.destroyAllWindows()