作者SiriusJinn (假斯汀)
看板C_and_CPP
标题[问题] OpenCV 做透视转换
时间Sun Jun 14 12:10:45 2009
有找到两种函式
1.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
用来填充边界外面的值
2.CvMat* cvWarpPerspectiveQMatrix( const CvPoint2D32f* src,
const CvPoint2D32f* dst,
CvMat* map_matrix );
src
输入图像的四边形的4个点坐标
dst
输出图像的对应四边形的4个点坐标
map_matrix
输出的 3×3 矩阵
比较起来似乎第2种方法会比较快吧?
想请问的是要怎麽取出输入图像的4个点坐标呢?
感谢回答!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.62.36.60
1F:推 wa120:两种的性质不一样 一个是输入图 一个是输入点阿 06/14 12:44
2F:→ SiriusJinn:1.应该是array 2.应该是点 取点的运算量是不是比较小 06/14 13:12
3F:→ SiriusJinn:不过我正在研究其中的运算式,不知怎麽变换就是了..... 06/14 13:13
4F:→ SiriusJinn:刚查了一下CvArr可指定不同类型,但是图要怎麽变成那样 06/14 13:16
5F:推 licheer:第一种是,给SRC图,给变换矩阵,输出DST图 06/14 16:42
6F:→ licheer:第二种是,给两张图其中分别对应的四组座标,算出矩阵 06/14 16:43