opencv之重映射

好久没写呆码了

今天发个重映射 

#include "opencv2/video/tracking.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <iostream>
#include <ctype.h>
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include<opencv2/opencv.hpp>
#include<string.h>
#include<vector>
using namespace cv;
using namespace std;



/*****************************************************重映射****************************************/


int main()
{
    //【0】变量定义
    Mat srcImage,dstImage,img;
    Mat map_x, map_y;
    VideoCapture capture(0);
    while (1)
    {
        //【1】载入原始图
        capture >> srcImage;
        imshow("原始图", srcImage);
        //【2】创建和原始图一样的效果图,x重映射图,y重映射图
        dstImage.create(srcImage.size(), srcImage.type());
        map_x.create(srcImage.size(), CV_32FC1);
        map_y.create(srcImage.size(), CV_32FC1);
        //【3】双层循环,遍历每一个像素点,改变map_x & map_y的值
        for (int j = 0; j < srcImage.rows; j++)
        {
            for (int i = 0; i < srcImage.cols; i++)
            {
                //改变map_x & map_y的值. 
                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, map_y, INTER_LINEAR, BORDER_CONSTANT, Scalar(0, 0, 0));
        imshow("【程序窗口】", dstImage);
        waitKey(1);
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/Loving-Q/p/11985380.html
今日推荐