您的位置:首页 > 运维架构

cvPerspectiveTransform

2016-11-29 11:08 821 查看
今天使用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>

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
;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  opencv