OpenCV图像像素映射
一、概述
案例:实现一个图片左右翻转(照镜子),上下翻转(倒立)的效果
映射函数介绍:
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.输出映射后的图像
二、代码示例
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);
三、效果展示
1.上下翻转效果图
2.左右互换效果图
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
2020-02-23 使用Gson+泛型制作一个序列化和反序列化的工具类
2020-02-23 Gson使用方法详解