728x90
일단 이미지를 불러옵니다.
이미지에서 한자 글자 외부에만 사각형을 빨간 테두리로 치는게 목표입니다.
한자 글자 사이사이 띄어진 여백때문에 경계가 나눠질 수도 있으므로 블러를 해줍니다.
여백이 너무 적어보여 여백을 추가해서 보다 실전에 가깝게 만들어줍시다.
cv2.connectedComponentsWithStats를 이용해서 해당 영역의 x, y, w, h 좌표를 구합니다.
그리고 cv2.rectangle을 이용해서 이를 그려줍니다.
전체 코드는 아래에!!
image = (plt.imread('dataset/茄/茄 22.png') * 255.).astype(np.uint8)
image = cv2.resize(image, (256, 256))
plt.imshow(image)
blur = cv2.GaussianBlur(cv2.cvtColor(image, cv2.COLOR_RGBA2RGB), ksize=(3,3), sigmaX=0)
plt.imshow(blur)
new_image_width = 500
new_image_height = 500
color = (255, 255, 255)
result = np.full((new_image_height, new_image_width, 3), color, dtype=np.uint8)
# compute center offset
x_center = (new_image_width - 256) // 2
y_center = (new_image_height - 256) // 2
# copy img image into center of result image
result[y_center:y_center+256,
x_center:x_center+256] = blur
plt.imshow(result)
mask = (result[..., 0] < 100).astype(np.uint8)
retval, labels, stats, centroids = cv2.connectedComponentsWithStats(mask)
x, y, w, h, area = stats[1]
rectangled_image = cv2.rectangle(result, pt1=(x, y), pt2=(x+w, y+h), color=(255, 0, 0), thickness=3)
plt.imshow(rectangled_image)
https://youbidan.tistory.com/19
'기타' 카테고리의 다른 글
[노션] 노션 상위 혹은 하위 페이지 공유 안하기!!! (1) | 2023.01.28 |
---|---|
[flask] json 객체 등 javascript에서 flask, python으로 데이터 보내기 (0) | 2022.02.01 |
[flutter] 앱 개발하면서 삽질 했던 경우 (0) | 2022.01.30 |
[error handling] 0xc10100be python write video, cv2 video write가 안될때 (0) | 2021.11.30 |
non manifold? manifold? 가 무엇인가 (0) | 2021.04.05 |