https://www.xin3721.com/eschool/pythonxin3721/
这两天新型肺炎病例是指数上升啊!呆在家里没事干,正好想起之前FPGA大赛上有个老哥做了一个图像旋转作品,还在群里发了技术报告。无聊之下就打算学习一下,然后就顺便把平移、旋转、缩放这些几何变换都看了,最后决定把这三个综合起来写个“旋转傻乌龟”的动画。先是用OpenCV内置函数实现了下,感觉不过瘾,又自己写了一遍。老规矩,还是把学过的、做过的东西记录下来!
旋转傻乌龟,效果就是将一只乌龟在窗口中同时进行平移、缩放和旋转,由于最后看起来样子比较傻,因此得名“旋转傻乌龟”。
效果视频:
1|0一、几何变换的矩阵表示
1|11.1 平移的表示
上图中的三种表示方法第二种是OpenCV要求的方式,但第一种形式表示起来更具统一性,因此我更倾向于第一种。但无论哪一种,都能展开成第三种的形式。第三种非常直观的反映了平移,只是需要注意正负号的选取——在编程中,图像一般以左上角为(0,0)点。这也就是说,建立坐标系的时候,X轴以右正方向,Y轴以下为正方向。以上矩阵表示将图像向右平移x0,向下平移y0,也可以认为是将坐标系向左平移x0,向上平移y0。平移可以形象地表示如下:
1|21.2 以左上角为定点缩放的表示
缩放最容易理解,就是将横纵坐标乘以缩放比例。由于我们以左上角为坐标系原点,所以左上角点的位置并不会变化。
1|31.3 以左上角点为中心旋转的表示
在本文中