remap()函数

remap()函数

常见应用:图像翻转,图像缩小。

void remap(InputArray src, //输入图像

           OutputArraydst, //输出图像

           InputArray map1,//第一个映射

           InputArray map2, //第二个映射

           int interpolation, //插值

           intborderMode=BORDER_CONSTANT,

           const Scalar& borderValue=Scalar()

           )

调用remap前,要先设置好map1和map2

对应关系     map 1-----map_x;

                    map2------map_y;

/上下翻转//

for (int j = 0; j < srcImage.rows; j++)

       {

              for (int i = 0; i < srcImage.cols; i++)

              {

                     map_x.at<float>(j, i) = static_cast<float>(i);//行不变

                     map_y.at<float>(j, i) = static_cast<float>(srcImage.rows - j);//列翻转

              }

       }

/左右翻转//

for (int j = 0; j < srcImage.rows; j++)

       {

              for (int i = 0; i < srcImage.cols; i++)

              {

                     map_x.at<float>(j, i) = static_cast<float>(srcImage.cols - i);//行翻转

                     map_y.at<float>(j, i) = static_cast<float>(j);//列不变

              }

       }

 

/缩小为原来的一般,并在中间显示//

for (int j = 0; j < srcImage.rows; j++)

       {

              for (int i = 0; i < srcImage.cols; i++)

              {

                  if(i > srcImage.cols*0.25 && i < srcImage.cols*0.75 && j > srcImage.rows*0.25 && j < srcImage.rows*0.75)

                       {

                           map1_x.at<float>(j, i) = 2*(i - srcImage.cols*0.25) + 0.5;

                          map2_y.at<float>(j, i) = 2*(j - srcImage.rows*0.25) + 0.5;

                       }

                 else

                      {

                         map1_x.at<float>(j, i) = 0;

                        map2_y.at<float>(j, i) = 0;

                       }

                }

         }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值