각 픽셀의 위치는 g (x, y) = f (h (x, y)), h (x, y)는 매핑 방법 함수입니다. h (x, y) = (i.cols () -x, y) 인 경우, x 축 방향으로 변형이 발생 함을 의미합니다.
기능 : IMGPROC.REMAP (MAT SRC, MAT DST, MAT MAP1, MAT MAP2, Int Interpolation, Int BorderMode, Scalar Bordervalue)
매개 변수 설명 :
SRC : 소스 이미지
DST : 대상 이미지
MAP1 : 표현할 수있는 두 가지 객체가 있으며, 하나는 포인트 (x, y)를 나타내는 첫 번째 맵이고, 다른 하나는 CV_16SC2, CV_32FC1 및 CV_32FC2 유형의 X 값입니다.
MAP2 : 표현할 두 가지 가능한 객체가 있습니다. 하나는 MAP1이 포인트 (x, y)의 첫 번째 맵을 나타내며 값을 나타내지 않는 경우입니다. 다른 하나는 유형 CV_16UC1 및 CV_32FC1의 y 값입니다.
보간 : 보간 방법, Inter_Area는 지원하지 않습니다
BorderMode : 경계 모드, 기본 경계 _contant
Bordervalue : 일정한 경계가있을 때 사용되는 값, 기본값은 0입니다.
샘플 코드 :
public static void main (String [] args) {System.LoadLibrary (core.native_library_name); mat src = imgcodecs.imread ( "f : //t0105b07b97736d453d.jpg"); mat dst = src.clone (); mat map_x = new mat (src.size (), cvtype.cv_32fc1); mat map_y = new mat (src.size (), cvtype.cv_32fc1); int key = 1; // 키 값 1, 2, 3, 4 for (int i = 0; i <src.rows (); i ++) {for (int j = 0; j <src.cols (); j ++) {switch (key) {case 1 : // remap 1 if (j> src.cols () * 0.25 && j <src.cols () * 0.75 && i. src.rows () * 0.25 && i <src.rows () * 0.75) {map_x.put (i, j, 2 * (j -src.cols () * 0.25) + 0.5); map_y.put (i, j, 2 * (i -src.rows () * 0.25) + 0.5); } else {map_x.put (i, j, 0.0); map_y.put (i, j, 0.0); } 부서지다; 사례 2 : // 2 Map_X.put (i, j, j); map_y.put (i, j, src.rows () -i); 부서지다; 사례 3 : // 3 Map_X.put (i, j, src.cols () -j); map_y.put (i, j, i); 부서지다; 사례 4 : // 4 Map_X.put (i, j, src.cols () -j); map_y.put (i, j, src.rows () -i); 부서지다; 기본값 : 브레이크; }}} imgproc.remap (src, dst, map_x, map_y, imgproc.inter_linear, core.border_constant, new Scalar (0, 0, 0)); imgcodecs.imwrite ( "f : //dst.jpg", dst); } 소스 이미지 :
첫 번째 매핑 :
두 번째 매핑 :
세 번째 매핑 :
네 번째 매핑 :
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.