opencv仿射变换问题求解
opencv吧
全部回复
仅看楼主
level 1
src = imread( argv[1], 1 ); /// 设置目标图像的大小和类型与源图像一致 warp_dst = Mat::zeros( src.rows, src.cols, src.type() ); /// 设置源图像和目标图像上的三组点以计算仿射变换 srcTri[0] = Point2f( 0,0 ); srcTri[1] = Point2f( src.cols - 1, 0 ); srcTri[2] = Point2f( 0, src.rows - 1 ); dstTri[0] = Point2f( src.cols*0.0, src.rows*0.33 ); dstTri[1] = Point2f( src.cols*0.85, src.rows*0.25 ); dstTri[2] = Point2f( src.cols*0.15, src.rows*0.7 ); /// 求得仿射变换 warp_mat = getAffineTransform( srcTri, dstTri );
这是在网上看到的求仿射变换6个参数的代码,我想知道,这三个点为什么要这么设置?这0.33等这些数字是怎么来的?
2017年08月25日 02点08分 1
level 1
分别设置src,dst图像上的三个点是为了计算出仿射变换矩阵;仿射变换矩阵有6个参数,至少要有三个点才能算出6个参数。至于dst上的点*0.33,我觉得0.33这些数字是随机的是,为了让你的dst不同于src,仿射变换矩阵才可能存在。
比较口语化,希望能看懂,有异议的地方相互指教[呵呵]
2017年08月25日 05点08分 2
1