#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/calib3d/calib3d.hpp>
#include <iostream>
using namespace cv;
using namespace std;
#define PATH "/Users/mac/ClionProjects/opencv_test/"
/**
函数中输入输出为同一个图像时即为原地操作(in_place)
remap; 把图中一个位置像素放在另一张图的另一个位置, 即dst(x, y)=src(map_x(x,y), map_y(x,y))
*/
int main()
{
//
Mat srcImg = imread(PATH"csu.jpg");
Mat dstImg, map_x, map_y;
if(!srcImg.data){
cout<<"图片不存在";
return 0;
}
dstImg.create(srcImg.size(), srcImg.type());
map_x.create(srcImg.size(), CV_32FC1);
map_y.create(srcImg.size(), CV_32FC1);
// 定义map中的值;记住map本身也是一个MAt, 记录了该像素映射的位置
for(int j= 0; j<srcImg.rows; j++){
for(int i=0; i<srcImg.cols;i++){
map_x.at<float>(j,i) = static_cast<float>(i);
// x 不变,y 值改变,此操作会使图片上下颠倒
map_y.at<float>(j,i) = static_cast<float>(srcImg.rows - j);
}
}
remap(srcImg, dstImg, map_x, map_y, CV_INTER_LINEAR, BORDER_CONSTANT, Scalar(0, 0, 0));
imshow("ans", dstImg);
waitKey(0);
return 0;
}
remap
猜你喜欢
转载自blog.csdn.net/futangxiang4793/article/details/82940694
今日推荐
周排行