cvPerspectiveTransform

来源:互联网 发布:ubuntu一直在登录界面 编辑:程序博客网 时间:2024/06/06 12:41

    今天使用cvPerspectiveTransform映射,编译通过,运行时总是显示OpenCV Error: Bad flag (parameter or structure field) (Unrecognized or unsupported array type) in cvGetMat............ 通过查找其使用方法,输入输出如下:

src : Source two-channel or three-channel floating-point array. Each element is a 2D/3D vector to be transformed.dst  :  Destination array of the same size and type as  src .mtx:3x3 or 4x4 floating-point transformation matrix.


从网上抄来一个可以执行的例子:

#include <cv.h>

#include <highgui.h>

usingnamespace 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 ;

}

0 0