英文版原文链接
上一教程:Hough Circle Transform(Hough圆变换)
下一教程:Affine Transformations(仿射变换)
结果
- 在编译代码之后,我们可以将图像的路径作为参数提供给它。例如,像这样的图片:
- 这是大小减少一半的结果,中心点不变:
- 把它颠倒过来:
- 在x方向上的反映射:
- 在两个方向反映射:
目标
此教程我们将学会:
- 使用OpenCV函数 cv::remap 实现简单的映射例程。
原理
什么是重映射?
代码
这个程序是做什么的?
- 加载一个图像
- 每秒钟,对图像应用4个不同重映射程序中的一个,并在一个窗口中无限地显示它们。
- 等待用户退出程序
代码如下所示:
#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/imgproc.hpp"
#include <iostream>
using namespace cv;
void update_map( int &ind, Mat &map_x, Mat &map_y );
int main(int argc, const char** argv)
{
CommandLineParser parser(argc, argv, "{@image |chicky_512.png|input image name}");
std::string filename = parser.get<std::string>(0);
Mat src = imread( samples::findFile( filename ), IMREAD_COLOR );
if (src.empty())
{
std::cout << "Cannot read image: " << filename << std::endl;
return -1;
}
Mat dst(src.size(), src.type());
Mat map_x(src.size(), CV_32FC1);
Mat