본문 바로가기

기타

[opencv-python] 이미지 boundary detection, rectangle detection 이미지내 객체 사각형 테두리 만들기

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

 

 

[파이썬] Python과 OpenCV로 이미지 외곽 찾기, 이미지 자르기, 원하는 부분만 자동으로 잘라내기 +

이미지 분류를 위한 딥러닝 모델을 만들던 중 학습 데이터가 필요해서 이미지를 크롤링 해왔으나 문제점이 있었다. 모델을 만들 때 잘 정제된 학습 데이터를 쓰는 것과 그렇지 않은 것으로 학습

youbidan.tistory.com