本章内容

重映射、x轴翻转,y轴翻转,xy轴镜像,图像缩小

opencv 重映射、x轴翻转,y轴翻转,xy轴镜像,图像缩小

输出结果:

opencv 重映射、x轴翻转,y轴翻转,xy轴镜像,图像缩小

源码


#include <ostream>
#include <opencv.hpp>
#include <math.h>

int main(int argc, char *argv[])
{
    /*
     本章内容:
        重映射Reamap
    */
    cv::String fileName = "/home/wang/dev/Image/biuld.jpeg";
    cv::String fileName1 = "/home/wang/dev/Image/pingpang.jpeg";
    cv::Mat src = cv::imread(fileName);
    cv::Mat src2 = cv::imread(fileName1);
    if(src.data == NULL){
        printf("图像读入失败\n");
        return -1;
    }
    /*重映射
     * api接口:CV_EXPORTS_W void remap( InputArray src, OutputArray dst,
                         InputArray map1, InputArray map2,
                         int interpolation, int borderMode = BORDER_CONSTANT,
                         const Scalar& borderValue = Scalar());

        @param map1 x轴映射
        @param map2  y轴映射
        @param interpolation Interpolation method (see #InterpolationFlags).
        enum InterpolationFlags {
                INTER_NEAREST        = 0,
                INTER_LINEAR         = 1,
                INTER_CUBIC          = 2,
            }
    */
    cv::Mat mapX(src.rows,src.cols,CV_32FC1);
    cv::Mat mapY(src.rows,src.cols,CV_32FC1);
    cv::String winName = "";
    for(int i=0; i < src.rows;i++){
        for(int j=0; j <src.cols;j++){
            switch(0){
            case 0:
                winName="关于x轴翻转";
                mapX.at<float>(i,j) = src.cols - j; //关于x轴翻转
                mapY.at<float>(i,j) =i;
                break;
            case 1:  // 关于y轴翻转
                winName="关于y轴翻转";
                mapX.at<float>(i,j) = j;
                mapY.at<float>(i,j) =src.rows - i ;
                break;
            case 2: // 关于x,y翻转
                winName="关于x,y翻转";
                mapX.at<float>(i,j) = src.cols - j;
                mapY.at<float>(i,j) =src.rows - i ;
                break;
            case 3: // 缩小并平移
                winName="缩小并平移";
                mapX.at<float>(i,j) = j*2 - src.cols/4;
                mapY.at<float>(i,j) = i*2 - src.rows/4;
                break;
            }
        }

    }
    cv::Mat dstX;
    cv::remap(src,dstX,mapX,mapY,cv::INTER_LINEAR);
    cv::imshow("src",src);
    cv::imshow(winName,dstX);

    cv::waitKey(0);
    return 1;
}

 

相关文章:

  • 2022-12-23
  • 2022-01-06
  • 2021-12-30
  • 2021-08-14
  • 2022-12-23
  • 2021-07-05
  • 2021-10-10
  • 2022-01-28
猜你喜欢
  • 2021-07-13
  • 2021-11-10
  • 2022-01-31
  • 2021-10-14
  • 2021-04-24
  • 2021-05-02
  • 2022-12-23
相关资源
相似解决方案