图像几何变换
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;
int main()
{
system("color 3F");
Mat srcImage, dstImage;
Mat map_x, map_y;
srcImage = imread("C:/Users/hasee-pc/Desktop/girl.jpg");
imshow("原始图", srcImage);
dstImage.create(srcImage.size(), srcImage.type());
map_x.create(srcImage.size(), CV_32FC1);
map_y.create(srcImage.size(), CV_32FC1);
for (int j = 0; j < srcImage.rows; ++j)
{
for (int i = 0; i < srcImage.cols; ++i)
{
map_x.at<float>(j, i) = static_cast<float>(i);
map_y.at<float>(j, i) = static_cast<float>(srcImage.rows - j);
}
}
remap(srcImage,//原图 单通道八位 或者浮点型图像
dstImage, //输出图
map_x,// 两种可能表示对象1:表示(x,y)的第一个映射,2:CV_16SC2,CV_32FC1,CV_32FC2类型的X值
map_y,//两种可能表示对象1:表示(x,y) 不代表任何值,2:CV_16UC1,cv_32FC1的Y值
CV_INTER_LINEAR,//插值方式
BORDER_CONSTANT,//边界模式, 图像中的离群点
Scalar(0, 0, 0)//常数边界使用的值
);
imshow("程序", dstImage);
waitKey(0);
return 0;
}