• 重映射


    重映射

    重映射就是把一幅图像中某个位置的像素放置到另一个图片中指定位置的过程。

    用一个数学公式来表示就是:

    其中的 f 就是映射方式,也就说,像素点在另一个图像中的位置是由 f 来计算的。

    在OpenCV中,用的是remap函数实现重映射。

    基本重映射

     1 #include <opencv2/opencv.hpp>
     2 #include <opencv2/core/core.hpp>
     3 #include <opencv2/highgui/highgui.hpp>
     4 #include<iostream>
     5 #include<stdlib.h>
     6 using namespace cv;
     7 using namespace std;
     8 int main()
     9 {
    10     Mat srcImage,dstImage;
    11     Mat map_x,map_y;
    12     srcImage=imread("E:\lena.jpg");
    13     imshow("srcImage",srcImage);
    14     //创建和原始图一样的效果图,X重映射图,Y重映射图
    15     dstImage.create(srcImage.size(),srcImage.type());
    16     map_x.create(srcImage.size(),CV_32FC1);
    17     map_y.create(srcImage.size(),CV_32FC1);
    18     //双层循环,遍历每一个像素点,改变map_x,map_y的值
    19     for(int j=0;j<srcImage.rows;j++)
    20     {
    21         for(int i=0;i<srcImage.cols;i++)
    22             {
    23                 map_x.at<float>(j,i)=static_cast<float>(i);
    24                 map_y.at<float>(j,i)=static_cast<float>(srcImage.rows-j);
    25         }
    26     }
    27     //进行重映射操作
    28     remap(srcImage,dstImage,map_x,map_y,INTER_LINEAR,BORDER_CONSTANT,Scalar(0,0,0));
    29     imshow("cxck",dstImage);
    30     waitKey();
    31     return 0;
    32 
    33 }

    map_x与map_y分别代表目标图中的(x,y)点在原图中的x坐标(由map_x提供)与y坐标(由map_y提供)。

    运行结果

    萍水相逢逢萍水,浮萍之水水浮萍!
  • 相关阅读:
    在Django中如何使用Redis
    Redis的基本操作
    短信接口的频率限制
    版本控制器git
    windows生成公私钥以及应用
    luffy前台组件的搭建
    周末大作业
    同源策略的解决方案
    全局Response对象和全局异常捕获和日志
    爬虫之代理池搭建
  • 原文地址:https://www.cnblogs.com/AIBigTruth/p/9697019.html
Copyright © 2020-2023  润新知