cvRemap 对图像进行普通几何变换

函数 cvRemap 利用下面指定的矩阵变换输入图像:
  dst(x,y)<-src(mapx(x,y),mapy(x,y))
  与其它几何变换类似,可以使用一些插值方法(由用户指定,同cvResize)来计算非整数坐标的像素值

void cvRemap( const CvArr* src, CvArr* dst,const CvArr* mapx, const CvArr* mapy,int flags=CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS,CvScalar fillval=cvScalarAll(0) );

src             输入图像.
  dst             输出图像.
  mapx        x坐标的映射 (32fC1 image).
  mapy        y坐标的映射 (32fC1 image).
  flags         插值方法和以下开关选项的组合:
                    CV_WARP_FILL_OUTLIERS - 填充边界外的像素. 如果输出图像的部分象素落在变换后的边界外,那么它们的值设定为 fillval。

#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
#include <iostream>
int Remap(int argc,char** argv)
{
uchar DataSrc[]={1,2,3,4,5,6,7,8,9
};
CvMat MatSrc;
cvInitMatHeader(&MatSrc,3,3,CV_8UC1,DataSrc); //初始化矩阵
CvMat *MatDst=cvCreateMat(3,3,CV_8UC1); //创建矩阵
//cvInitMatHeader(&MatDst,3,3,CV_8UC1);
float DataMapx[]={1,2,0,       //cvRemap函数的mapx一定要为float型1,2,0,1,2,0
};
CvMat mapx;
cvInitMatHeader(&mapx,3,3,CV_32FC1,DataMapx); //注意类型是CV_32FC1
float DataMapy[]={0,0,1,1,1,2,2,2,0
};
CvMat mapy;
cvInitMatHeader(&mapy,3,3,CV_32FC1,DataMapy);
cvRemap(&MatSrc,MatDst,&mapx,&mapy,CV_INTER_LINEAR | CV_WARP_FILL_OUTLIERS);
//打印原矩阵
std::cout<<"MatSrc=\'#\'" //打印mapx
std::cout<<"mapx:"<<std::endl;
for(int rows=0;rows<mapx.height;rows++)
{
float *DataPt=(float*)(mapx.data.ptr+rows*mapx.step);
for(int cols=0;cols<mapx.width;cols++)
{
float data=*(DataPt+cols);
std::cout<<(float)data<<" ";
}
std::cout<<std::endl;
}
//打印mapy
std::cout<<"mapy:"<<std::endl;
for(int rows=0;rows<mapy.height;rows++)
{
float *DataPt=(float*)(mapy.data.ptr+rows*mapy.step);
for(int cols=0;cols<mapy.width;cols++)
{
float data=*(DataPt+cols);
std::cout<<(float)data<<" ";
}
std::cout<<std::endl;
}
//打印结果矩阵
std::cout<<"MatDst:"<<std::endl;
for(int rows=0;rows<MatDst->height;rows++)
{
uchar *DataPt=(uchar*)(MatDst->data.ptr+rows*MatDst->step);
for(int cols=0;cols<MatDst->width;cols++)
{
uchar data=*(DataPt+cols);
std::cout<<(int)data<<" ";
}
std::cout<<std::endl;
}
return 0;
}

cvRemap 对图像进行普通几何变换相关推荐

  1. OpenCV 图像采样 插值 几何变换

    转自:http://hi.baidu.com/xiaoduo170/blog/item/6eefc612c9f8e9c6c2fd786f.html InitLineIterator 初始化线段迭代器 ...

  2. 图像几何变换C++实现--镜像,平移,旋转,错切,缩放

    一.图像几何变换介绍 图像的几何空间变换是图像处理中的最基础的算法,是指对原始图像按需要改变其大小.形状和位置的变化,原始图像与目标函数之间的坐标变换函数为线性函数.二维图像的基本几何变换主要包括镜像 ...

  3. [Python图像处理] 十二.图像几何变换之图像仿射变换、图像透视变换和图像校正

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  4. MFC空间几何变换之图像平移、镜像、旋转、缩放

    本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程<数字图像处理>及课件进行讲解,主要通过MFC单文档视图实现显示BMP图片空间几何变换,包括图像平移.图形 ...

  5. 图像算法二:【图像几何变换】平移、镜像、转置、缩放、旋转、插值

    作为一个强大的科学计算软件,MATLAB广泛运用于较多领域,以其简单的编程风格著称.这篇文章便通过matlab语言来讲述如何进行图像的各种几何变换. 图像几何变换又称为图像空间变换,它是将一幅图像中的 ...

  6. 图像处理之图像的几何变换

    一.前言 图像的几何变换是将一幅图像中的坐标映射到另外一幅图像中的新坐标位置,它不改变图像的像素值,只是改变像素所在的几何位置,使原始图像按照需要产生位置.形状和大小的变化.本文主要介绍图像的基本几何 ...

  7. 【数字图像处理】六.MFC空间几何变换之图像平移、镜像、旋转、缩放详解

    本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程<数字图像处理>及课件进行讲解,主要通过MFC单文档视图实现显示BMP图片空间几何变换,包括图像平移.图形 ...

  8. 【数字图像处理】六.MFC空间几何变换之图像平移、镜像、旋转、缩放具体解释...

           本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程<数字图像处理>及课件进行解说,主要通过MFC单文档视图实现显示BMP图片空间几何变换.包含 ...

  9. 图像几何变换时为何要用到插值算法?_计算机视觉方向简介 | 图像拼接

    作者戴金艳,公众号:计算机视觉life, 编辑部成员. 更好的阅读体验请看首发原文链接计算机视觉方向简介 | 图像拼接 简介 图像拼接是将同一场景的多个重叠图像拼接成较大的图像的一种方法,在医学成像. ...

最新文章

  1. SQL Server数据库重命名、数据导出等若干问题
  2. DataSourceUtils(使用C3P0连接池的工具类)
  3. [maven][spring boot] mvn -f 指定pom文件
  4. linux下mysql-5.6忘记root密码,重置root密码详细过程
  5. robotlegs框架吴秦大师续讲【转载】
  6. vscode 文件高亮插件_实用的Visual Studio Code插件
  7. Context.getDir
  8. C# 使用Aspose.Word将Word书签的数据进行替换 包含打印
  9. 使用 HTTP 动词篡改的认证旁路 (Http Verb Tempering: Bypassing Web Authentication and Authorization)
  10. html给表格添加标题栏,word表格怎么添加标题栏 如何在word表格上方加标题
  11. JS定时器原理及案例
  12. 针对全局的接口出入参加解密-AES/ECB/PKCS5Padding
  13. 移动端web设计尺寸_移动端之Web及app设计尺寸
  14. 大数据集可以用自助法吗_基于大数据的自助点餐方法和点餐匹配系统与流程
  15. Linux系统SCSI磁盘扫描机制解析及命令实例
  16. 对随机变量值域的思考
  17. Oracle分析函数七——函数案例
  18. java.sql.SQLException: Error writing file '/tmp/MY2zYz09' (Errcode: 28 - No space left on device)
  19. 微信小程序和百度小程序的登录 wx.login() swan.login() , 以及存在的问题处理
  20. python爬虫----简单的抓取斗鱼弹幕

热门文章

  1. Inside the C++ Object Model | Outline
  2. 以ThreadStart方式实现多线程
  3. 关于farpoint公司的控件:SPREAD for .NET Windows Forms Ed.的一些简单方法.
  4. 【摘抄】百度分词算法详解:查询处理以及分词技术
  5. [转载]如何用关键字优化网站?
  6. 第五天:Swift拖动 item 重排 CollectionView
  7. Leetcode之二叉树(前200道)
  8. python set
  9. ORACLE union order by
  10. 上海交通大学2006年数学分析考研试题