이미지에서 텍스트 영역을 찾아주는 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))..
webcam에서 가져온 영상을 mp4로 저장하는 OpenCV Python 예제입니다. 2022. 3. 30 최초작성 # 참고 # https://github.com/dgseten/bad-cv-tfm/blob/2ada9b71f85aa5eb75c1f4a039cb14d697ee2f69/tools/video/video-player-wait-fps.py # https://stackoverflow.com/a/65146731 # https://stackoverflow.com/a/41666642 import cv2 import time import os # 이미지에 텍스트를 출력하는 함수 def draw_text(img, text, x, y): font = cv2.FONT_HERSHEY_SIMPLEX font_scale..
Tesseract의 파이썬 래퍼인 pytesseract를 설치하여 이미지 상의 글자를 인식시키는 코드를 작성해보았습니다. Ubuntu 18.04에서 테스트를 진행했습니다. 마지막 업데이트 - 2018. 9. 9 tesseract-ocr과 한글 데이터 패키지를 설치해줍니다. 추가로 파이썬에서 사용하기 위해 필요한 pytesseract를 설치합니다. $ sudo apt install tesseract-ocr tesseract-ocr-script-hang tesseract-ocr-script-hang-vert $ sudo pip3 install pytesseract 우선 터미널에서 문자 인식을 해보겠습니다. 한글과 영문 텍스트가 포함된 이미지를 각각 테스트 해보았습니다. 한글 문서의 경우 -l Hangul 옵..
warpPerspective 함수를 사용하여 퍼스펙티브 변환(Perspective Transformation)을 구현합니다. 퍼스펙티브 변환에서 원본 이미지의 모든 직선은 출력 이미지에서 직선으로 유지됩니다. 퍼스펙티브 변환 행렬을 찾으려면 입력 이미지의 4점과 대응하는 출력 이미지의 4점이 필요합니다. getPerspectiveTransform 함수를 사용하면 대응하는 4점 쌍에 대한 변환 행렬을 구할 수 있습니다. warpPerspective 함수를 사용하여 변환을 실행합니다. 마지막 업데이트 - 2018. 10. 4 다음 순서대로 책의 모서리를 클릭합니다. 클릭한 책 모서리에 빨간점이 찍히게 됩니다. 스페이스바를 누르면 정면에서 바라본 책의 이미지로 변환된 이미지가 보입니다. 테스트에 사용한 원본 ..
warpAffine 함수를 사용하여 아핀 변환(Affine Transformation)을 구현합니다. 아핀 변환에서 원본 이미지의 모든 평행선은 출력 이미지에서 여전히 평행합니다. 아핀 변환 행렬을 찾으려면 입력 이미지의 3점과 대응하는 출력 이미지의 3점이 필요합니다. getAffineTransform 함수를 사용하면 대응하는 3점 쌍에 대한 변환 행렬을 구할 수 있습니다. warpAffine함수를 사용하여 변환을 실행합니다. 마지막 업데이트 - 2018. 10. 5 왼쪽 위, 오른쪽 위, 왼쪽 아래 순으로 마우스로 클릭합니다. 클릭한 위치에 빨간점이 표시됩니다. 스페이스바를 클릭하면 오른쪽 위 점이 아래로 밀린 이미지가 보입니다. 다시 스페이스바를 클릭하면 왼쪽아래 점이 오른쪽으로 밀린 이미지가 보입..
warpAffine함수를 사용하여 이미지를 이동 및 회전하는 방법을 다루고 있습니다. 마지막 업데이트 - 2018. 10. 3 translation matrix를 사용하여 x축 방향 및 y축 방향으로 이미지를 이동시킵니다. rotation matrix를 사용하여 이미지를 회전시킵니다. OpenCV의 getRotationMatrix2D 함수는 배율 및 회전 중심 좌표가 추가된 rotation matrix를 사용합니다. 테스트에 사용한 전체 코드입니다. import numpy as np import cv2 # 원본 이미지 img_source = cv2.imread('cat.jpg') cv2.imshow("original", img_source) cv2.waitKey(0) # 이미지 이동 height, wid..
resize() 함수를 사용하여 이미지를 확대 및 축소하는 방법을 다루고 있습니다. 2018. 10. 3 최초 작성 2023. 2. 14 제목 변경 이미지 확대 또는 축소시 사용할 보간법(interpolation methods) 지정해줄 수 있습니다. 지정해주지 않았을 때 디폴트값은 cv2.INTER_LINEAR입니다. 이미지 확대할때에는 cv2.INTER_CUBIC 또는 cv2.INTER_LINEAR을 권장합니다. cv2.INTER_CUBIC을 사용하면 좀더 선명한 이미지를 얻을 수 있지만 처리속도가 상대적으로 느립니다. 동영상을 처리하거나 큰 이미지를 처리할 때에 체감이 될듯합니다. 이미지를 축소할때에는 cv.INTER_AREA를 권장합니다. 테스트에 사용한 전체 코드입니다. import cv2 # ..
Python에서 자식 Process 죽었는지 확인하는 예제 코드입니다. 2022.12.31 최초작성 from time import sleep from multiprocessing import Process import subprocess import os # 자식 프로세스가 부모 프로세스보다 먼저 종료되도록 함 def task(): for i in range(3): print('child process print', i) sleep(1) print('child process exit') if __name__ == '__main__': child = Process(target=task) child.start() parent_pid = os.getpid() print('parent process pid = ..
Python에서 자식 Process ID 확인하는 예제 코드입니다. 2022.12.31 최초작성 from time import sleep from multiprocessing import Process import subprocess import os def task(): for i in range(5): sleep(1) if __name__ == '__main__': child = Process(target=task) child.start() # 부모 프로세스 ID parent_pid = os.getpid() print('parent process pid = ', parent_pid) # 자식 프로세스 ID child_pid = child.pid print('child process pid = ', c..
Python으로 작성된 AWS Lambda 함수를 사용해보았습니다. 2021. 9. 28 - 최초작성 AWS 관리 콘솔 사이트(https://aws.amazon.com/ko/console/ )에 접속하여 로그인 후, 오른쪽 상단에 보이는 리전을 서울로 변경합니다. 꼭 서울일 필요는 없습니다. 왼쪽 상단에 보이는 서비스를 클릭합니다. 서비스 목록에서 컴퓨팅 항목에 있는 Lambda를 클릭합니다. 오른쪽 상단에 보이는 함수 생성 버튼을 클릭합니다. 상단에 새로 작성이 선택된 상태에서 함수 이름을 적은 후, 런타임을 Python 3.9로 변경합니다. 이제 오른쪽 하단에 보이는 함수 생성을 클릭합니다. 기본 람다 코드가 보입니다. 이 코드는 json 패키지를 임포트하고 lambda_handler라는 함수를 정의..