重映射 Remap

重映射是指把一个图像指定位置的像素通过映射关系转到另一个图像的指定位置
函数原型

  1. public static void Remap(InputArray src,
  2. OutputArray dst,
  3. InputArray map1,
  4. InputArray map2,
  5. InterpolationFlags interpolation = InterpolationFlags.Linear,
  6. BorderTypes borderMode = BorderTypes.Constant,
  7. Scalar? borderValue = null);

image.png

  1. Mat mat = new Mat(@"I:\OpenCvSharp学习\4.jpg", ImreadModes.AnyColor);
  2. Window window = new Window("源图像", WindowMode.Normal, mat);
  3. Mat MapMat1 = new Mat(mat.Size(),MatType.CV_32FC1);
  4. Mat MapMat2 = new Mat(mat.Size(), MatType.CV_32FC1);
  5. for (int j = 0; j < mat.Rows; j++)
  6. {
  7. for (int i = 0; i < mat.Cols; i++)
  8. {
  9. MapMat1.At<float>(j, i) = (float)(i);
  10. MapMat2.At<float>(j, i) = (float)(mat.Rows - j);
  11. }
  12. }
  13. Mat mat2 = new Mat();
  14. Cv2.Remap(mat, mat2,MapMat1,MapMat2);
  15. Window window1 = new Window("源图像1", WindowMode.Normal, mat2);
  16. Cv2.WaitKey(0);

image.png