opencv3实现重映射-remap函数

来源:互联网 发布:数据接口开发 编辑:程序博客网 时间:2024/04/30 13:35
#include<opencv2/opencv.hpp>#include<iostream>#include<vector>using namespace cv;using namespace std;int main(){Mat srcImage = imread("tiger.jpg", 1);imshow("【原图】", srcImage);Mat grayImage;cvtColor(srcImage, grayImage, CV_BGR2GRAY);Mat XImage, YImage;Mat dstImage;dstImage.create(srcImage.size(), srcImage.type());XImage.create(srcImage.size(), CV_32FC1);YImage.create(srcImage.size(), CV_32FC1);//映射关系  (x, y) <-> (cols - x, y);//数字图像的原点是在左上角,y轴竖直向下(行数),x轴水平向右(列数)//下面的i定义的是行数,所以代表的是图像的y轴,而j定义的是列数,所以代表的是图像的x轴for (int i = 0; i < srcImage.rows; i++){for (int j = 0; j < srcImage.cols; j++){//这里建立的是一个映射关系:使原图中(x, y)灰度值映射到输出图的 (cols - x, y)灰度值中//就相当于是 一个自变量映射到因变量  因变量再重映射到另一个自变量XImage.at<float>(i, j) = static_cast<float>(srcImage.cols - j);YImage.at<float>(i, j) = static_cast<float>(i);}}//进行重映射remap(srcImage, dstImage, XImage, YImage, CV_INTER_LINEAR, BORDER_CONSTANT, Scalar(0, 0, 0));imshow("【重映射后】", dstImage);waitKey(0);return 0;}

0 0
原创粉丝点击