cv2.remap 함수는 이미지의 각 픽셀들을 사전에 정의된 위치로 하나씩 옮겨서 이미지 전체를 변형하는 함수이다.
cv2.remap 함수의 파라미터로는 src, map1, map2가 들어간다.
- src는 원본 이미지
- map1은 원본 이미지의 특정 픽셀이 옮겨가야할 좌표의 x값
- map2는 y좌표값이다.
src의 shape이 (h,w,3)이라고 할 때,
당연하게도 map1, map2는 모두 (h,w)의 shape을 가져야 한다.
그러나, map1의 shape이 (h,w,2), map2의 shape이 (h,w)를 갖는 경우를 볼 수 있는데,
이는 리매핑 과정에서 사용되는 map1, map2의 m1type이 다르게 정의되어있어서 발생하는 문제이다.
기본적으로는 (map1, map2) 가 (CV_32FC1, CV_32FC1) 타입(16bit float)을 갖지만,
만약 (map1, map2)가 (CV_16SC2, CV_16UC1)으로 정의 되어있었다면
map1이 x,y 좌표값의 반올림 값을 가지기 때문에 shape이 (h,w,2)이고,
map2는 리매핑 시 사용되는 interpolation table의 index만을 저장하기 때문에 shape이 (h,w)가 되는 것이다.
굳이 이렇게 쓰는 이유는 더 빠르게 연산할 수 있기 때문이라고 한다.
'파이썬' 카테고리의 다른 글
WSL 현재 시간 동기화 문제 (0) | 2023.03.22 |
---|---|
FATAL: exception not rethrown (0) | 2023.03.21 |
과제를 성공시키기 위해 한 짓거리 (0) | 2021.07.22 |
파이썬으로 '크롤링' 하는법 (0) | 2021.01.10 |