cvPerspectiveTransform
2016-01-04 16:42
1071 查看
今天在用到透视投影变换的时候,调用opencv中的cvPerspectiveTransform ,不知为何总是报错,后来仔细看了cvPerspectiveTransform 函数说明后才明白,
void cvPerspectiveTransform( const CvArr* src, CvArr* dst, const CvMat* mat );
参数src,dst必须是三通道的浮点数组,也就是一个值中包含有(x,y,z)坐标了。
以一个简单的例子说明
void cvPerspectiveTransform( const CvArr* src, CvArr* dst, const CvMat* mat );
参数src,dst必须是三通道的浮点数组,也就是一个值中包含有(x,y,z)坐标了。
以一个简单的例子说明
#include <cv.h> #include <highgui.h> using namespace cv; void main() { float A[] = {1 , 0 , 0 , 0 , 0 , 2 , 0 , 10 , 0 , 0 , 1 , 20 , 0 , 0 , 0 , 1} ; CvMat *perMat = cvCreateMat(4 , 4 , CV_32FC1) ;//透视投影变换矩阵 cvInitMatHeader(perMat , 4 , 4, CV_32FC1 , A) ; float s[] = {10 , 20 , 30} ; CvMat *src = cvCreateMat(1 , 1 , CV_32FC3) ;//待变换点 cvInitMatHeader(src , 1 , 1 , CV_32FC3 , s) ; CvMat *dst = cvCreateMat(1 , 1 , CV_32FC3) ;//变换后点 cvPerspectiveTransform(src , dst , perMat) ; std::cout<<std::endl ; for (int i = 0 ; i < 1 ; i++) { float *pdata = (float*)(dst->data.ptr) ; std::cout<<*pdata<<"\t"<<*(pdata + 1)<<"\t"<<*(pdata + 2) ; } std::cout<<std::endl ; }
相关文章推荐
- ios概念之static,const,extern
- 安装cocoapods
- 模仿 QQ侧边栏 onClick 和 onTouch共存 问题
- Java套接字Socket编程--TCP参数
- BP神经网络的优缺点
- How to use softvol to control the master volume
- 数据库设计步骤--了解用户需求:向客户请教
- Java设计模式_结构型_组合模式_树根树叶和树枝
- OPENCV人脸检测实现
- tornado学习笔记18 _RequestDispatcher 请求分发器
- webapi中的路由约束
- codeforces 463E . Caisa and Tree
- 智商太低,竟然算不出病狗神题了
- 米特运输
- 欧拉路径 之 poj 2513 Colored Sticks
- Java 调用 shell 脚本详解
- 笔记记录
- Nginx开启目录浏览
- 屏幕监听
- [置顶] Spring mvc数据转换与格式化