opencv透视变换GetPerspectiveTransform的总结
对于透视变换,必须为map_matrix分配一个3x3数组,除了3x3矩阵和三个控点变为四个控点外,透视变化在其他方面与仿射变换完全类似。具体可以参考:点击打开链接
主要用到两个函数WarpPerspective和GetPerspectiveTransform。
1)WarpPerspective
对图像进行透视变换
void cvWarpPerspective( const CvArr* src, CvArr* dst,const CvMat* map_matrix,
int flags=CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS,
CvScalar fillval=cvScalarAll(0) );
src
输入图像.
dst
输出图像.
map_matrix
3×3 变换矩阵
flags
插值方法和以下开关选项的组合:
· CV_WARP_FILL_OUTLIERS- 填充所有缩小图像的象素。如果部分象素落在输入图像的边界外,那么它们的值设定为 fillval.
· CV_WARP_INVERSE_MAP- 指定 matrix 是输出图像到输入图像的反变换,因此可以直接用来做象素插值。否则, 函数从 map_matrix 得到反变换。
fillval
用来填充边界外面的值
函数 cvWarpPerspective 利用下面指定矩阵变换输入图像:
- 如果没有指定 CV_WARP_INVERSE_MAP ,
- 否则,
要变换稀疏矩阵,使用 cxcore 中的函数 cvTransform 。
2)GetPerspectiveTransform
由四对点计算透射变换
CvMat* cvGetPerspectiveTransform( const CvPoint2D32f*src, const CvPoint2D32f* dst,
CvMat*map_matrix );
#define cvWarpPerspectiveQMatrixcvGetPerspectiveTransform
src
输入图像的四边形顶点坐标。
dst
输出图像的相应的四边形顶点坐标。
map_matrix
指向3×3输出矩阵的指针。
函数cvGetPerspectiveTransform计算满足以下关系的透射变换矩阵:
这里,dst(i)= (x'i,y'i),src(i)= (xi,yi),i = 0..3.
最新文章
- Winform开发框架之参数配置管理功能实现-基于SettingsProvider.net的构建
- 基于.net开发chrome核心浏览器【六】
- window使用qt遇到的坑
- CocoaPods安装和使用教程(转摘)
- iOS开发多线程篇—自定义NSOperation
- window.location 对象所包含的属性
- CSDN-markdown语法之怎样使用LaTeX语法编写数学公式
- 聪明的质监员[NOIP2011]
- Eclipse字体颜色的设置方法
- python基础教程(二)
- BZOJ_1031_[JSOI2007]字符加密Cipher_后缀数组
- Django2.1配置xadmin2.0
- 自学自用 = B站(操作系统_清华大学(向勇、陈渝)) 未完待续。。
- TCP/IP 和 HTTP 的区别和联系是什么?
- 每天一个linux命令(13):less命令
- oracle 序列sequence
- Execl矩阵如何转化成Pajek的net文件
- jdk1.8以前不建议使用其自带的Base64来加解密
- Golang 并发Groutine实例解读(二)
- [iOS]异常捕捉