A posição de cada pixel é expressa pelo remapeamento: g (x, y) = f (h (x, y)) e h (x, y) é uma função do método de mapeamento. Quando h (x, y) = (i.cols ()-x, y), significa que a deflexão ocorre na direção do eixo x.
Função: imgproc.remap (MAT SRC, MAT DST, MAT MAP1, MAT MAP2, INT Interpolation, Int BorderMode, Scalar Bordervalue)
Descrição do parâmetro:
SRC: imagem de origem
DST: Imagem de destino
MAP1: possui dois objetos possíveis para representar, um é o primeiro mapa que representa o ponto (x, y), e o outro é o valor x do tipo CV_16SC2, CV_32FC1 e CV_32FC2
MAP2: Ele tem dois objetos possíveis a serem representados. Uma é quando o MAP1 representa o primeiro mapa do ponto (x, y), que não representa nenhum valor. O outro é o valor y do tipo CV_16UC1 e CV_32FC1
Interpolação: Método de Interpolação, Inter_area não suporta
BorderMode: Modo de limite, Border_contant padrão
BorderValue: o valor usado quando há um limite constante, o padrão é 0
Código de exemplo:
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; // Valores -chave 1, 2, 3, 4 para (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 <j <sp 1 se (j> src.cols () * 0.25 & j <j <src 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); } quebrar; Caso 2: // Remap 2 map_x.put (i, j, j); map_y.put (i, j, src.rows () - i); quebrar; Caso 3: // Remap 3 map_x.put (i, j, src.cols () - j); map_y.put (i, j, i); quebrar; Caso 4: // Remap 4 map_x.put (i, j, src.cols () - j); map_y.put (i, j, src.rows () - i); quebrar; Padrão: quebra; }}} Imgproc.remap (src, dst, map_x, map_y, imgproc.inter_linear, core.border_constant, new scalar (0, 0, 0)); Imgcodec.imwrite ("f: //dst.jpg", dst); } Imagem de origem:
O primeiro mapeamento:
O segundo mapeamento:
O terceiro mapeamento:
O quarto mapeamento:
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.