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

opencv(三):几何变换

2019-01-02 09:34 726 查看

空间变换

    仿射变换

          什么是仿射变换?

                对一张图片进行旋转,缩放,平移的变换就叫仿射变换。

          仿射变换函数:

                Mat getAffineTransform(InputArray src, InputArray dst), 该函数需要已知变换前与变换后的坐标,返回相应的变换矩阵                          ,至于是何种变换无需事先知道。适用于目标检测场合,通过检测得到的特征点进行图像匹配。  

                Mat getRotationMatrix2D(Point2f center, double angle, double scale), 通过已知旋转中心坐标(坐标原点为图像左上端                          点)、旋转角度(单位为度°,顺时针为负,逆时针为正)、放缩比例,来计算并返回旋转/放缩矩阵。与                                          getAffineTransform相比,无需知道变换后坐标,适用于一般情况下的图像变换。

               void warpAffine(InputArray src, OutputArray dst, InputArray M, Size dsize, int flags=INTER_LINEAR,                                                                          int borderMode=BORDER_CONSTANT, const Scalar& borderValue=Scalar())  
                    根据getAffineTransform或getRotationMatrix2D得到的变换矩阵,计算变换后的图像。warpAffine不只可以用来实现                      仿射变换,还能用来实现其他的变换。

                   有关各参数的解释: 

                    src为输入图像

                    dst为变换后图像,类型与src一致。

                    M为变换矩阵,需要通过其它函数获得,当然也可以手动输入。

                    dsize为输出图像的大小

                    flags,插值算法,详细如下(但是根本就不必看,只要搞清楚为什么需要插值就行了):

                               当图像放大时,会比原图像多出一些像素,但是你总得给这些像素赋一些值吧,插值算法就是用来解决这些                                 像素赋值的问题。

                               下面只粘贴一部分插值算法,详情请百度百科。

                               enum InterpolationFlags{  
                               /** nearest neighbor interpolation */  
                               INTER_NEAREST        = 0,  //最近邻插值  
                               /** bilinear interpolation */  
                               INTER_LINEAR         = 1, //双线性插值  
                               /** bicubic interpolation */  
                               INTER_CUBIC          = 2, //双三次插值  
                               .........

           opencv实现图像旋转(其它变换的流程与仿射变换相似,就不介绍了)

           若有错误,请指出,谢谢。

           参考自:

           https://www.geek-share.com/detail/2549360961.html

           https://www.geek-share.com/detail/2698731841.html

           

    

               

 

 

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