4.2.6 图像翻转
4.2.6 图像翻转
图像翻转的物理意义,可以理解为摄像头或者相机和物体的夹角及距离发生了变化,就有点像我们正面看电视屏幕是个长方形,但是从侧面看是一个平行四边形。从仿射变换的角度讲,就是同时出现了旋转与缩放变换。
在opencv中,只需要知道变换前的三个点与其对应的变换后的点,就可以通过函数getaffinetransform求得变换矩阵。
getaffinetransform(src, dst, mapmatrix)
假设把原图中的三个点srcpoints分别移动到canvaspoints。
srcpoints = np.float32([[0,0],[0,150],[150,150]])
canvaspoints = np.float32([[0,0],[0,150],[150,200]])
如图4-12所示,整个图像将发生翻转。
matrix = cv2.getrotationmatrix2d((0,0),0,0.5)
img2 = cv2.warpaffine(img1,matrix,(cols,rows))
matrix = cv2.getaffinetransform(np.array(srcpoints),np.array(canvaspoints))
print(matrix)
img3 = cv2.warpaffine(img2,matrix,(cols,rows))
图4-12 图像翻转示例
图像翻转的物理意义,可以理解为摄像头或者相机和物体的夹角及距离发生了变化,就有点像我们正面看电视屏幕是个长方形,但是从侧面看是一个平行四边形。从仿射变换的角度讲,就是同时出现了旋转与缩放变换。
在opencv中,只需要知道变换前的三个点与其对应的变换后的点,就可以通过函数getaffinetransform求得变换矩阵。
getaffinetransform(src, dst, mapmatrix)
假设把原图中的三个点srcpoints分别移动到canvaspoints。
srcpoints = np.float32([[0,0],[0,150],[150,150]])
canvaspoints = np.float32([[0,0],[0,150],[150,200]])
如图4-12所示,整个图像将发生翻转。
matrix = cv2.getrotationmatrix2d((0,0),0,0.5)
img2 = cv2.warpaffine(img1,matrix,(cols,rows))
matrix = cv2.getaffinetransform(np.array(srcpoints),np.array(canvaspoints))
print(matrix)
img3 = cv2.warpaffine(img2,matrix,(cols,rows))
图4-12 图像翻转示例