OpenCV图像像素映射

1、概述

  案例:实现一个图片左右翻转(照镜子),上下翻转(倒立)的效果 

映射函数介绍:
Remap(
InputArray src,// 输入图像
OutputArray dst,// 输出图像
InputArray  map1,// x 用于存放图像X方向的映射关系,类型必须是CV_32FC1的。
InputArray map2,// y 用于存放图像Y方向的映射关系,类型必须是CV_32FC1的。
int interpolation,// 选择的插值方法,常见线性插值,可选择立方等
int borderMode,// BORDER_REPLICATE:重复、BORDER_REFLECT:反射、BORDER_REFLECT_101:反射101、BORDER_WRAP:外包装、BORDER_CONSTANT:常量复制
const Scalar borderValue// color 
) 

  实现步骤:

  1.加载原图

  2.获取x方向的映射、y反向的映射

  3.调用remap函数传入参数实现映射

  4.输出映射后的图像

2、代码示例

 Mat src = imread(filePath);
    if(src.empty()){
        return;
    }
    imshow("src",src);
    Mat dst,map_x,map_y;
    map_x.create(src.size(),CV_32FC1);
    map_y.create(src.size(),CV_32FC1);
    for(int i=0;i<src.rows;i++){
        float *ptrX = map_x.ptr<float>(i);//获取一列像素
        float *ptrY = map_y.ptr<float>(i);
        for(int j=0;j<src.cols;j++){
//            //左右像素对调,其实就是把坐标给互换掉
//            ptrX[j] = (float)(src.cols-j);
//            ptrY[j] = (float)i;
            //上下对调
            ptrX[j] = (float)j;
            ptrY[j] = (float)(src.rows-i);
        }
    }
    remap(src,dst,map_x,map_y,BORDER_CONSTANT);
    imshow("remap",dst);

3、效果展示

  1.上下翻转效果图

  2.左右互换效果图

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值