# Some trouble with Perspective Transform

Hello, i use PerspectiveTransform and as a result have matrix of transformation. I need transform coordinates of ONE point using this matrix, i read that i can use coficient of matrix for calculate it, and matrix buil like this

x'i = (Ax + By + C)/(ax+ by + c)

y'i = (Dx + Ey + F)/(ax+ by + c)

CvPoint2D32f srcQuad[4], dstQuad[4];
CvMat* warp_matrix = cvCreateMat(3,3,CV_32FC1);
srcQuad... some code here


But when i use this formula it dont work corectly every time

p.x=(matrix[0][0]*p.x+matrix[0][1]*p.y+matrix[0][2])/(matrix[2][0]*p.x+matrix[2][1]*p.y+matrix[2][2]);
p.y=(matrix[1][0]*p.x+matrix[1][1]*p.y+matrix[1][2])/(matrix[2][0]*p.x+matrix[2][1]*p.y+matrix[2][2]);
`

I think that the transformation matrix in OpenCV has a different structure, or I made ​​a mistake somewhere. Perhaps there is other variant coordinate transformation one point? And Sorry for my english)

edit retag close merge delete

have you compared your result with the output of cv::transform(...) ?

( 2013-03-09 05:40:51 -0600 )edit

Sort by » oldest newest most voted

Hi! You should transpose your matrix on image to get the formula below it. OpenCV uses this formula:
where (Mij) - transformation matrix. About perspective transformation in OpenCV you can read here.

more

1

Thank you.

( 2013-03-09 10:34:32 -0600 )edit

Official site

GitHub

Wiki

Documentation

## Stats

Asked: 2013-03-09 01:39:17 -0600

Seen: 801 times

Last updated: Mar 09 '13