【1】理论知识

图像平移就是将图像中所有的点按照指定的平移量水平或者垂直移动

【2】完整代码

/*-------------------------------------------------------------------------------------------------------
*程序说明:
*       基于OpenCV实现------图像的平移
*开发环境:
*       win7+vs2010+opencv2.4.8
*创建时间地点:
*       陕西师范大学。2017.3.2
*参考资料:
*       《数字图像处理与计算机视觉》张铮,徐超-----95页算法
*作者:
*       李先生
--------------------------------------------------------------------------------------------------------*/
#include<opencv2\highgui\highgui.hpp>
#include<opencv2\highgui\highgui.hpp>
#include<opencv2\imgproc\imgproc_c.h>
#include<iostream>
using namespace cv;
using namespace std;/*-----------------------------------【定义生成图像的灰度直方图】---------------------------------
*函数原型:
*        void ImMove(IplImage* srcImage, IplImage* Image,int x,int y);
*函数功能:
*        图像平移
*参数:
*        IplImage* srcImage:要进行处理的灰度图像
*        IplImage* Image   :将处理后的图像写入Image图像
*        int  x            : 表示水平方向移动的大小
*        int  y            : 表示垂直方向移动的大小
*返回值:无返回值类型
---------------------------------------------------------------------------------------------------------*/
void ImMove(IplImage* srcImage,IplImage* Image,int x,int y)
{int nHeight = srcImage->height;int nWidth = srcImage->width;//判断平移参数合理性if(x>nWidth||y>nHeight){cout<<"超过图片大小"<<endl;return ;}//开始遍历原图像,读出每个位置的像素,并相应目标图片所移动的中//这里需要注意的是图像遍历是从左上角开始的,即左上角位置的坐标为(0,0)for(int h=0;h<nHeight;h++){for(int w=0;w<nWidth;w++){if(w+x<nWidth && h+y<nHeight)  //判断平移后的位置是否超出了原图像的范围{uchar gray= (uchar)*((uchar*)(srcImage->imageData+h*srcImage->widthStep)+srcImage->nChannels*w);   //读取原图(w,h)坐标的像素*((uchar*)(Image->imageData+(h+y)*Image->widthStep)+Image->nChannels*(w+x)) = gray;                   //写入目标目标图片(w+x,h+y)坐标}}}
}int main()
{//【1】载入原图IplImage* srcImage = cvLoadImage("G:\\Image\\lenaRGB.png",0);cvNamedWindow("原图");cvShowImage("原图",srcImage);//【2】为目标图片做准备CvSize srcSize;srcSize.height=srcImage->height;srcSize.width=srcImage->width;IplImage * Image=cvCreateImage(srcSize,srcImage->depth,1);//【3】调用图像平移函数并显示结果ImMove(srcImage,Image,50,100);     //注:这里直接给出移动的大小(50,100),即x向右移动50,同时向下移动100cvNamedWindow("平移结果");cvShowImage("平移结果",Image);//【3】释放内存空间waitKey(0);cvDestroyWindow("原图");cvDestroyWindow("平移结果");cvReleaseImage(&srcImage);cvReleaseImage(&Image);return 0;
}

【3】运行结果

基于OpenCV实现图像平移相关推荐

  1. 4.3【图像镜像】-------------基于Opencv实现-----图像的镜像变换

     [1]理论知识:         镜像变换又分为水平镜像和垂直镜像,水平镜像即将图像左半部分和右半部分以图像竖直中轴线为中心轴进行兑换,而竖直镜像则是将图像上半部分和下半部分以图像水平中轴线为中 ...

  2. 基于OpenCV实现------图像的转置

    [1]理论基础 图像转置是将图像的x坐标和y坐标互换,图像的大小会随之改变----------即高度和宽度将互换. [2]图像转置的变换公式 因为转置矩阵的逆矩阵仍然是其本身,故转置变换的逆变换具有相 ...

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

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

  4. 基于OpenCV平滑图像

    基于OpenCV平滑图像也就是图像模糊,本博文介绍使用OpenCV的不同函数通过线性滤波进行图像平滑. cv::blur cv::GaussianBlur (高斯模糊) cv::medianBlur ...

  5. 数字识别java开源_Java基于opencv实现图像数字识别(三)—灰度化和二值化

    Java基于opencv实现图像数字识别(三)-灰度化和二值化 一.灰度化 灰度化:在RGB模型中,如果R=G=B时,则彩色表示灰度颜色,其中R=G=B的值叫灰度值:因此,灰度图像每个像素点只需一个字 ...

  6. Java基于opencv实现图像数字识别(一),java开发面试笔试题

    我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...

  7. 基于OpenCV实现图像线性变化

    基础知识: 线性灰度变换函数f(x)是一个一维线性函数 y=f(x)=ax+b 式中:a为线性函数的斜率,b为线性函数在y轴的截距,x表示输入图像的灰度值,y表示输出图像的灰度值. (1) 当a> ...

  8. java图片降噪_Java基于opencv实现图像数字识别(四)—图像降噪

    Java基于opencv实现图像数字识别(四)-图像降噪 我们每一步的工作都是基于前一步的,我们先把我们前面的几个函数封装成一个工具类,以后我们所有的函数都基于这个工具类 这个工具类呢,就一个成员变量 ...

  9. 基于opencv的图像阴影消除车辆变道检测

    基于opencv的图像阴影消除 详细代码在这!!! 最大滤波 def max_filtering(N, I_temp):wall = np.full((I_temp.shape[0]+(N//2)*2 ...

最新文章

  1. 国产海翼号水下滑翔机首次应用于北极科考
  2. 一个JDK线程池BUG引发的GC机制思考
  3. iphonex重量_精仿苹果iPhone X手机配置介绍
  4. mongodb中简单的聚合查询
  5. 微软WSUS服务器 3.0安装配置详解
  6. 浅谈 DML、DDL、DCL的区别
  7. 图的数组(邻接矩阵)存储结构
  8. MVC强类型和弱类型的区别
  9. js img图片加载失败,重新加载+断网检查
  10. idea会不定时闪屏_显示器闪屏什么原因
  11. hexo -d 部署的时候报错 FATAL Something's wrong Template render error: expected variable
  12. ios上的pvr与png
  13. 【毕业答辩】如何做出90分的毕业答辩PPT?
  14. zabbix常见报错
  15. ES6-模块导入导出
  16. 【前端基础进阶】JS原型、原型链、对象详解
  17. java--cmd乱码
  18. 算法学习笔记12:散列表
  19. Mac OSX 下破解软件的一般方法及过程、 mark一下
  20. OEL6.5+11GR2安装(超级详细版)

热门文章

  1. mysql workbench 数据备份_如何使用MySQL Workbench进行MySQL数据库备份?
  2. mysql star item 失败_解决CentOS7下MySQL服务启动失败的问题.md
  3. android:inputType参数类型说明
  4. 基于JAVA+Swing+MYSQL的工资管理系统
  5. 基于JAVA+Servlet+JSP+MYSQL的幼儿园管理系统
  6. 修改pip安装源加快python模块安装
  7. pku2750 Potted Flower
  8. 46 - 算法 -Leetcode 168 -位运算 类型模拟倒序利用vector
  9. Python之数据分析(figure图形对象、Numpy连线特殊点、图像多元布局)
  10. 标签页添加点击事件和拖拽事件