#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;
}
opencv3实现重映射-remap函数
最新推荐文章于 2024-08-22 16:29:20 发布
该博客介绍了如何使用OpenCV3的remap函数将图像进行重映射操作,通过创建新的坐标映射关系,将原图的每个像素点 `(x, y)` 映射到输出图像的 `(cols - x, y)` 位置,实现了图像的翻转效果。示例代码展示了从读取图像到最终显示重映射后图像的完整过程。"
50966471,5608698,Java中子类是否继承父类私有变量解析,"['Java', '继承', '访问修饰符']
摘要由CSDN通过智能技术生成