码迷,mamicode.com
首页 > 其他好文 > 详细

重映射

时间:2018-09-24 23:14:54      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:com   span   pen   mat   过程   clu   col   lib   ima   

重映射

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

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

技术分享图片

其中的 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提供)。

运行结果

技术分享图片

 

重映射

标签:com   span   pen   mat   过程   clu   col   lib   ima   

原文地址:https://www.cnblogs.com/fpzs/p/9697019.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!