OpenCV

Python

[OpenCV] Affine Transform & Perspective Transform

영상에서 글자 인식을 위한 OCR 프로젝트를 하면서 전처리 과정에서 가장 잘 썼던 두 변환에 대해 정리하고자 한다. 1. Affine Transform : 영상의 이동, 전단, 확대, 회전을 조합할 때 직사각형이 평행사변형으로 변환이다. 쉽게 말하면 회전, 평행 이동, 스케일링, 반전까지 모두 포함한 변환이다. affine transform은 선의 평행성이 유지 되면서 변환된다. Affine 변환을 하기 위해 매칭되는 3개의 점(pts1, pts2)이 있어야만 변환 행렬을 구할 수 있다. 이 점 3개의 이동 정보를 통해 마지막 점의 위치를 유추할 수 있게 된다. cv2.getAffineTransform을 통해 변환 행렬을 구한 후 cv2.warpAffine으로 변환 행렬을 img에 적용 시켜주면 된다. ..

Python

[OpenCV] Python ArUco Marker Generation, Detection, Pose Estimation

ArUco marker는 검정색 테두리가 있는 이진 정사각형 이미지이다. 내부에 패턴은 마커 종류에 따라 다르다. camera calibration 및 stitching을 위해 ArUco Marker가 거의 필수적으로 사용이 된다. 특히 pose estimation은 비전 분야에서 정말 많이 사용된다. opencv를 사용하면 아래 marker 사전을 통해 쉽게 ArUco marker를 생성하고 detection하는 코드를 작성할 수 있다. # define names of each possible ArUco tag OpenCV supports ARUCO_DICT = { "DICT_4X4_50": cv2.aruco.DICT_4X4_50, "DICT_4X4_100": cv2.aruco.DICT_4X4_100,..

Python

[Python] Pillow, Opencv로 이미지 다루기

파이썬으로 이미지를 다루기 전, 디지털 이미지에 대한 이해가 우선으로 필요하다. 디지털 화면은 색상을 가지는 점인 화소로 이루어져 있으며 각 화소는 RGB(Red, Green, Blue) 세 개의 색의 조합으로 색상이 표현된다. 디지털 이미지를 저장할 때는 각 점마다 색상 값을 저장하는 방식으로 저장한다. 이를 래스터(raster) 또는 비트맵(bitmap)이라고 하며 한 점마다 각 색상별로 8비트를 사용한다. 또 0 ~ 255 사이의 값(2^8=256)으로 해당 색의 감도를 표시한다. 또 다른 디지털 이미지 저장 방식으로는 벡터(vector) 방식이 있다. 이는 상대적인 점과 선의 위치를 방정식으로 기록했다가 확대 및 축소에 따라 각 화소가 어떻게 표현되는지를 재계산하기 때문에 디지털 이미지의 깨짐 현..

토오오끼
'OpenCV' 태그의 글 목록