图像平移指的是沿水平方向或垂直方向进行图像的移动。

平移变换公式:

​​​​​​​        

对于原始图像而言,正变换矩阵:

对于目标图像而言,逆变换矩阵:

代码:

#include<opencv2/imgproc.hpp>
#include<opencv2/highgui.hpp>
#include<opencv2/core.hpp>
#include<iostream>
#include<stdlib.h>
using namespace std;
using namespace cv;Mat imgTranslation1(Mat& src, int xOffset, int yOffset);
Mat imgTranslation2(Mat& src, int xOffset, int yOffset);
int main()
{Mat src = imread("C:\\Users\\H\\Desktop\\niao.bmp");if (src.empty()){cout << "请检查图像是否存在..." << endl;return -1;}pyrDown(src, src);cout << "原图尺寸\trows:" << src.rows << "\tcols: " << src.cols << endl;int xOffset = 50, yOffset = 80;Mat dst1 = imgTranslation1(src, xOffset, yOffset);imshow("dst1", dst1);cout << "平移不改变尺寸\trows: " << dst1.rows << "\tcols: " << dst1.cols << endl;Mat dst2 = imgTranslation2(src, xOffset, yOffset);imshow("dst2", dst2);cout << "平移改变尺寸\trows: " << dst2.rows << "\tcols: " << dst2.cols << endl;waitKey(0);system("pause");return 0;
}图像的平移 ,大小不变
Mat imgTranslation1(Mat& src, int xOffset, int yOffset)
{int nrows = src.rows;int ncols = src.cols;Mat dst(src.size(), src.type());for (int i = 0; i < nrows; i++){for (int j = 0; j < ncols; j++){映射变换int x = j - xOffset;int y = i - yOffset;边界判断if (x >= 0 && y >= 0 && x < ncols && y < nrows){dst.at<Vec3b>(i, j) = src.ptr<Vec3b>(y)[x];}}}return dst;
}
//图像平移大小改变
Mat imgTranslation2(Mat& src, int xOffset, int yOffset)
{int nrows = src.rows + abs(yOffset);int ncols = src.cols + abs(xOffset);Mat dst(nrows, ncols, src.type());for (int i = 0; i < nrows; i++){for (int j = 0; j < ncols; j++){int x = j - xOffset;int y = i - yOffset;if (x >= 0 && y >= 0 && x < ncols && y < nrows){dst.at<Vec3b>(i, j) = src.ptr<Vec3b>(y)[x];}}}return dst;
}

结果展示:

opencv之图像平移相关推荐

  1. 使用Python,OpenCV进行图像平移转换

    使用Python,OpenCV进行图像平移转换 1. 效果图 2. 原理 3. 源码 参考 这篇博客将介绍如何使用Python,OpenCV对图像进行平移转换.平移是图像沿x轴和y轴的移动.使用平移, ...

  2. 基于OpenCV实现图像平移

    [1]理论知识 图像平移就是将图像中所有的点按照指定的平移量水平或者垂直移动 [2]完整代码 /*--------------------------------------------------- ...

  3. opencv 图像平移、缩放、旋转、翻转 图像仿射变换

    图像几何变换 图像几何变换从原理上看主要包括两种:基于2x3矩阵的仿射变换(平移.缩放.旋转.翻转).基于3x3矩阵的透视变换. 图像平移 opencv实现图像平移 实现图像平移,我们需要定义下面这样 ...

  4. 应用OpenCV进行图像旋转和平移

    简 介: 本文中,你了解了了如何通过OpenCV完成对于图像的旋转和平移.我们首先通过 getRotationMatrix2D() 获取2D旋转矩阵,然后完成了对于图像的旋转.具体是通过warpAff ...

  5. 在OpenCV环境下写的两个图像平移C和C++源代码

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 图像平移的概念就不用多说了,直接上经实测无误的代 ...

  6. opencv python 图像缩放/图像平移/图像旋转/仿射变换/透视变换

    Geometric Transformations of Images 1图像转换 OpenCV提供了两个转换函数cv2.warpAffine和cv2.warpPerspective,可以使用它们进行 ...

  7. Python OpenCV 图像平移,取经之旅第 10 天

    今天是持续写作的第 43 / 100 天. 如果你有想要交流的想法.技术,欢迎在评论区留言. 本篇博客学习 OpenCV 中关于图像平移的方法,核心学习到的方法是 warpAffine . 取经之旅第 ...

  8. OpenCV-Python学习(18)—— OpenCV 图像几何变换之图像平移(cv.warpAffine)

    1. 学习目标 学习图像的平移矩阵: 学习 OpenCV 图像平移函数. 2. 图像的平移矩阵 平移是物体位置在水平和垂直方向的移动. 像素点 (x,y) 沿 x 轴平移 dx.沿 y 轴平移 dy, ...

  9. opencv之图像翻转、平移、缩放、旋转、仿射学习笔记

    opencv版本:opencv3.4.1 目录 1. 图像翻转(坐标映射) 2.  平移 3. 缩放 4. 旋转 1. 图像翻转(坐标映射) int main() {cv::Mat srcImage ...

最新文章

  1. 设计模式之策略模式(Strategy)摘录
  2. 在OR项目中使用火焰图
  3. 五十、Maven系列:安装和配置Maven镜像
  4. iOS UI 18 数据库
  5. Java读取HTML传人文件,java读取html文件并获取body中所有的标签及内容的案例.pdf
  6. swift学习笔记之-协议
  7. 如何简单快速的了解区块链技术(结尾有惊喜)
  8. 多级缓存设计详解 | 给数据库减负,刻不容缓!
  9. bzoj 1003: [ZJOI2006]物流运输
  10. LeetCode刷题(简单)笔记C++
  11. Struts 2.2.3 DOS漏洞
  12. 天锐绿盾注册机 使用手册
  13. Java证件照剪切_GitHub - cacacai/idPicCut: 对原始证件照进行压缩,剪裁,换背景,(美颜)...
  14. ERP中的制造数据结构
  15. 【MySQL】SHOW WARNINGS和SHOW ERRORS的作用是什么?
  16. Android RecyclerView只显示第一行
  17. Tableau实战 公司投资分析
  18. 用html做七巧板的方法,纯HTML5绘制的七巧板
  19. 从游戏中学习产品设计2:消费篇
  20. 电脑开机时,需选择启动项f1/f2/f5, 需按f1才能正常启动计算机

热门文章

  1. 盘点2018年网络空间安全热点:GDRP,微隔离,容器安全,SOC······
  2. 多重积分matlab
  3. 日历农历vue包括24节气等内容
  4. office2016安装后右键新建没有word、excel、ppt等--解决方法总结
  5. 信创办公--基于WPS的Word最佳实践系列(使用智能图形丰富表达内容)
  6. ALG 求单峰的位置
  7. 虚幻蓝图数据传递_数据产品的战略蓝图
  8. 解决U盘中文件全部变成快捷方式的问题
  9. mysql乘法_mysql乘法
  10. 纯css实现tooltip文字浮框