영상을 이동, 회전, 크기변환 등을 이용해 이미지를 왜곡하거나 왜곡된 이미지를 복원하기 위한 처리 기법
변환 (Transformations)
새로운 좌표()로 변환하는 함수
dst=cv2.warpAffine(src, matrix, dsize, dst, flags, borderMode, borderValue)
src | 원본 이미지 | numpy |
matrix | 2x3 | 변환행렬 |
dsize | 결과 이미지 크기 | (width, height) |
dst | 결과 이미지 | optional |
flags | 보간법 알고리즘 | optional |
borderMode | 외곽영역 보정 플래그 | optional |
borderValue | 외곽영역 보정 플래그 cv2.BORDER_CONSTANT 색상 값 (default=0) | optional |
flags
cv2.INTER_LINEAR
cv2.INTER_NEAREST
cv2.INTER_AREA
cv2.INTER_CUBIC
borderMode
cv2.BORDER_CONSTANT
cv2.BORDER_REPLICATE
cv2.BORDER_WARP
cv2.BORDER_REFLECT
xycar_ws
├ src
│ └ sliding_drive
│ └ src
│ ├ translation.py
│ ├ scaling.py
│ ├ Lenna.png
│ └ chess.png
│
├ build
└ devel
python translation.py
단순 이동
외곽 픽셀 파란색으로 보정
외곽 픽셀 원본 반사 보정
python scaling.py
보간법 없이 축소
보간법 적용 축소
보간법 없이 확대
보간법 적용 확대
cv2.resize(src, dsize, dst, fx, fy, interpolation)
python resizing.py
src | 원본 이미지 |
dsize | 출력 영상 크기, 생략 시 fx,fy 적용 |
fx,fy | 크기 배율 |
interpolation | 보간법 알고리즘 선택 플래그 |
dst | 결과 이미지 |
크기 지정으로 축소
배율 지정으로 축소
python rotation1.py
OpenCV에서는 y축이 반대방향
행렬 3열 : anchor가 원점(왼쪽상단)이므로 회전한 이미지를 중앙으로 이동
python rotation2.py
cv2.getRotationMatrix2D() 사용
0.5배
1.5배
크기 이동 회전에서 원래 평행 특성 그대로 유지
python affine.py
pts1 pts2
pts1 = np.float32([[50, 50], [200, 50], [50, 200]])
pts2 = np.float32([[10, 100], [200, 50], [100, 250]])
python perspective.py
도로 이미지 Bird Eye View 변형 처리
차선 검출
원본 이미지에 오버레이