이미지에서 텍스트 영역을 찾아주는 OpenCV Python의 MSER 예제OpenCV/OpenCV 강좌2023. 10. 13. 22:48
Table of Contents
반응형
이미지에서 텍스트 영역을 찾아주는 OpenCV Python의 MSER 예제입니다.
최초작성 2020. 12. 23
import cv2 import os import numpy as np path = os.path.dirname(os.path.realpath(__file__)) + "/f.jpg" img = cv2.imread(path) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) gray = cv2.GaussianBlur(gray,(5, 5),0) mser = cv2.MSER_create() regions,_ = mser.detectRegions(gray) clone = img.copy() hulls = [cv2.convexHull(p.reshape(-1, 1, 2)) for p in regions] remove1 = [] for i,c1 in enumerate(hulls): x, y, w, h = cv2.boundingRect(c1) r1_start = (x, y) r1_end = (x+w, y+h) for j,c2 in enumerate(hulls): if i == j: continue x, y, w, h = cv2.boundingRect(c2) r2_start = (x, y) r2_end = (x+w, y+h) if r1_start[0]> r2_start[0] and r1_start[1] > r2_start[1] and r1_end[0] < r2_end[0] and r1_end[1] < r2_end[1]: remove1.append(i) for j,cnt in enumerate(hulls): if j in remove1: continue x, y, w, h = cv2.boundingRect(cnt) margin = 10 cv2.rectangle(clone, (x-margin, y-margin), (x + w + margin, y + h + margin), (0, 255, 0), 1) cv2.imshow('mser', clone) cv2.waitKey(0) mask = np.zeros((img.shape[0], img.shape[1], 1), dtype=np.uint8) for j,cnt in enumerate(hulls): if j in remove1: continue x, y, w, h = cv2.boundingRect(cnt) margin = 10 cv2.rectangle(mask, (x-margin, y-margin), (x + w + margin, y + h + margin), (255, 255, 255), -1) text_only = cv2.bitwise_and(img, img, mask=mask) cv2.imshow("text only", text_only) cv2.waitKey(0) |
반응형
'OpenCV > OpenCV 강좌' 카테고리의 다른 글
CLAHE OpenCV Python 예제 코드 (0) | 2023.10.13 |
---|---|
유사한 사진 찾아주는 Python 코드 (0) | 2023.10.13 |
OpenCV Python - webcam에서 가져온 영상을 mp4로 저장하는 예제 (0) | 2023.10.13 |
OpenCV Python 강좌 – Perspective Transformation (0) | 2023.10.12 |
OpenCV Python 강좌 – 이미지 이동 / 회전 하기 (0) | 2023.10.12 |