1,getPerspectiveTransform 得到透视变换矩阵M
src_points = [left, bottom, left, top, right, top, right, bottom] #分别对应bbox的四个点坐标
src_points = np.array(src_points, dtype = "float32").reshape((-1,2)) #变为4*2的array
想把这个bbox变换为dst_height=224,dst_height=224 的图像,则dst_points为:
dst_corners = [0.0, dst_height, 0.0, 0.0, dst_width, 0.0, dst_width, dst_height] #对应图像的4个点坐标,四个点的坐标顺序和上面的bbox的顺序一致
dst_points = np.array(dst_corners, dtype = "float32").reshape((-1,2)) #变为4*2的array
M = cv2.getPerspectiveTransform(src_points, dst_points) #得到由src_points变换到dst_points的透视矩阵M
2,warpPerspective根据透视矩阵M变换图像
perspective = cv2.warpPerspective(image, M, (dst_width, dst_height), cv2.INTER_LINEAR)
image图像为bbox所在的原始图像,M为透视矩阵,(dst_width, dst_height)为变换后的图像大小
perspective为最终得到的(dst_width, dst_height)图像
小记录一下使用心得