본문 바로가기

& 프로그래밍/& openCV

(11)
OpenCV와 Tesseract를 이용한 문자 인식(OCR/테서랙트 설치/구현) OCR은 'optical character recognition'의 약자로, 이미지나 PDF등 이미 컨버팅 되어 있는 파일 안에서 텍스트를 추출하는 기술이다 가장 대표적인 예로, 주차장에 자동차 번호판 인식기, 번역기 등이 있다 이미지나 영상에서 캡쳐되는 특징을 분석해서 글자를 판독시키는 기술을 반영한다 Tesseract가 text를 분석하는 가장 대표적인 오픈소스이다 윈도우에서 설치하는 방법은 아래와 같다 1. Tesseract 설치 - Tesseract Github에서 코드 클론 - Additional language data 다운로드 (설치방법을 자세하게 공유해주신 블로그 참고) 2. Tesseract OCR 작동 명령어 tesseract image outputbase [-l 언어] [--oem o..
마우스로 선택한 부분만 출력 및 저장하기(polygon, ROI,openCV) 시중에 나온 openCV관련 서적은 ROI와 polygon, mouse event를 각 함수별로 예제를 다루고 있다 물론 각 함수별로 기초지식을 쌓아야 다양한 응용문제를 해결할 수 있겠지만, 기초에서 심화로 넘어가는 단계에선 살짝 막막한게 현실이다 이번에 내가 해본 실습은 다음과 같다 1. openCV를 이용해 이미지를 입력하고 윈도우에 띄운다 2. 윈도우로 띄운 이미지 중에 원하는 부분만 마우스로 클릭해서 polygon을 만든다 3. 선택된 polygon 내부의 이미지를 저장한다 4. polygon 좌표를 json파일로 저장한다 내가 작성한 코드를 순차적으로 풀이해보자면, 1. 모듈 임포트 이번 툴을 제작하는데 필요한 모듈은 아래와 같다. import cv2 as cv import imutils imp..
openCV 프로그래밍 기초(Thresholding) 이번시간에는 openCV 이미지 프로세싱 방법 중 하나인 'Thresholding'을 알아보고자 한다. '임계값'이라고도 불리는 thresholding은 기준점을 잡고 그 이상은 1, 이하는 0으로 취급하는 개념으로 이해하면 쉽다. cv2.threshold()함수로 호출한다 1. 라이브러리 임포트 import cv2 2. 이미지 파일 불러오기 src = cv2.imread('data/images/threshold.png',0) 3. threshold값 정하기 #기준점을 설정한다 thresh = 0 #위에서 설정한 값보다 큰 값을 모두 255로 변경하도록 설정 maxValue = 255 4. 오리지널 이미지와 thresholding된 값 호출하여 비교하기 # 오리지날 이미지 cv2.imshow('Origi..
openCV 프로그래밍 기초(VideoWriter) 이전 포스팅에서 비디오 파일을 읽어오는 방법을 배웠다 이번에는 비디오파일을 녹화하는 방법을 알아보려 한다 자율주행 시스템은 카메라로부터 실시간으로 받는 영상정보를 인식하여 학습된 모델을 바탕으로 결과를 도출하는 방식인데 그 과정에 가장 핵심이면서 기본인 카메라를 컨트롤하는 방법을 배우는 것이다 1. 라이브러리 임포트 import cv2 import numpy as np 2. 카메라로부터 데이터를 가져온다 cap = cv2.VideoCapture(0) #모듈 대소문자 주의 #0 : 0번 카메라를 의미 3. 카메라 연결상태 확인 if cap.isOpend() == False : print('Unable to read camera feed') 카메라가 정상적으로 연결되지 않았다면 해당 문구를 출력하여 안내하도..
openCV 프로그래밍 기초(dnn 모듈) openCV는 미디어(사진, 영상)소스 분석에 최적화된 라이브러리로 무엇보다 실시간 이미지 프로세싱에 중점으로 개발된 라이브러리다 openCV 라이브러리를 이용해 이미지, 영상에 대한 컴퓨터비전 분석을 용이하게 할 수 있고, openCV 안에도 그에 맞게 다양한 모듈을 지원하고 있다 오늘은 openCV라이브러리 내 다양한 모듈 중 dnn(deep neural network)라는 모듈을 알아보려 한다 많은 블로그나 레퍼런스에서 소개하는 내용으로는 dnn 모듈은 이미 생성되어있는 네트워크에서 순방향 실행을 위한 용도로 설계되어 기존의 여러 deep-learning framework에서 학습한 모델을 그대로 불러와서 dnn 모듈을 이용해 해당 모델을 실행시키는 방식으로 사용된다는 부분이다 cv_enet_mod..
openCV 프로그래밍 기초(영상 읽기) 이전까지 배운부분은 이미지파일에 대한 편집과 수정을 했다면 이번엔 영상 읽어오는 방법을 알아보겠다 영상을 읽어오는 방법은 여러가지가 존재하는데 - 저장되어있는 영상파일을 불러오는 방법 - 연결되어있는 카메라에서 영상소스를 바로 (녹화)받아오는 방법 두가지를 모두 해보겠지만 오늘은 첫번째 방법을 연습해보려한다 1. openCV 라이브러리 임포트 import cv2 2. 영상파일이 저장된 경로 불러오기 cap = cv2.VideoCapture('data/videos/chaplin.mp4') #카메라를 실행하여 바로 객체를 생성하는 방법은 아래주석코드이다 # cap = cv2.VideoCapture(0) #괄호 안 숫자는 카메라의 개수이다. 1개일때는 0부터 시작하여 순서를 매긴다 여기서 이전에 배운 이미지파..
openCV 프로그래밍 기초(원, 타원 그리기) 지난시간 openCV를 활용하여 직선, 사각형 그리기에 이어서 원, 타원을 그리는 함수를 알아보자 1. 필수 라이브러리 임포트 import cv2 import numpy as np 2. 저장된 이미지파일 경로를 가져와 변수에 저장 image = cv2.imread('data/images/mark.jpg',1) 3. cv2.circle 함수를 이용해 원 그리기 imageCircle = image.copy() cv2.circle(imageCircle, (350,200), 150, (255,0,0), thickness = 2) cv2.imshow('image circle', imageCircle) 4. cv2.ellipse 함수를 이용해 타원 그리기 imageEllipse = image.copy() cv2.e..
openCV 프로그래밍 기초(직선, 사각형 그리기) openCV에서는 영상, 비디오에서 처리 결과를 표시하고 쉽게 확인할 수 있도록 다양한 모형을 삽입할 수 있다 그 여러 도형 작성 방법 중 직선과 사각형을 그리는 방법에 대해서 배워보았다 1. 라이브러리 임포트 import cv2 import numpy as np 2. 파일 경로 불러와 변수에 저장 img = cv2.imread('data/images/mark.jpg') 3. 이미지파일 열어서 원본확인 cv2.imshow('original',img) 4. 원본 이미지를 복사해서 변수에 저장 imageLine = img.copy() #생략가능한 코드인데 나는 이 사진을 가지고 여러번 실습할거라 혹시나 원본이 상하지 않도록! 5. 선그리기 작성 cv2.line(imageLine, (322,179), (400..