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模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓