图片的透视变换

目录

1.透视变换结果溢出原图边界

2.相应的图片标签(box)怎样在透视变换后找到对应的坐标点


网上关于透视变换的文章很多,特别是对于原理解析的文章,所以我只记录下使用过程中遇到的问题;

1.透视变换结果溢出原图边界

本人的处理方法:

step1:根据原始的四个坐标点和目标的四个坐标点得到变换矩阵;

#p1:原图中的四个坐标点,p2:目标图中的四个坐标点
M = cv2.getPerspectiveTransform(p1, p2)

step2:将图片的边界的四个顶点输入到变换矩阵,得到变换后的四个坐标顶点;

h, w = image.shape[:2]
po1 = cv2.perspectiveTransform(np.array([[[0, 0]]], dtype=np.float32), M)
po2 = cv2.perspectiveTransform(np.array([[[w, 0]]], dtype=np.float32), M)
po3 = cv2.perspectiveTransform(np.array([[[w, h]]], dtype=np.float32), M)
po4 = cv2.perspectiveTransform(np.array([[[0, h]]], dtype=np.float32), M)

step3:根据变换后坐标顶点,判断图像顶点是否超出边界,若超出边界,则计算新的图片尺寸,对原始图片进行平移;

list_x = [po1[0][0][0], po2[0][0][0], po3[0][0][0], po4[0][0][0]]
list_y = [po1[0][0][1], po2[0][0][1], po3[0][0][1], po4[0][0][1]]
minx = min(list_x)
miny = min(list_y)
maxx = max(list_x)
maxy = max(list_y)
maxx = int(maxx - minx)
maxy = int(maxy - miny)widthNew = maxx
heightNew = maxymove_x = 0
move_y = 0image1 = None
if minx < 0: #x轴方向要进行平移move_x = -minx
if miny < 0: #y轴方向要进行平移move_y = -minyif move_y !=0 or move_x !=0:# 加入平移操作# M = np.float32([[1, 0, 100], [0, 1, 50]])  # (x,y) -> (100,50)# dst = cv.warpAffine(img, M, (cols, rows))mat_translation = np.float32([[1, 0, move_x], [0, 1, move_y]])  # 变换矩阵:设置平移变换所需的计算矩阵:2行3列# [[1,0,20],[0,1,50]]   表示平移变换:其中20表示水平方向上的平移距离,50表示竖直方向上的平移距离。image1 = cv2.warpAffine(image, mat_translation, (widthNew, heightNew), borderValue=(122, 122, 122))

step4:对step3的结果进行透视变换;

dst = cv2.warpPerspective(image1, M, [maxx, maxy]) #对图像进行透视变换

2.相应的图片标签(box)怎样在透视变换后找到对应的坐标点

这里只需要注意一点:大角度图片的标签要是左上顶点和右下顶点的矩形,透视变换后的坐标区域并不是很贴合真实需要检测的区域;最好的办法是使用四个顶点(左上,右上,右下,左下)的多边形的标签(这种多边形标签多用在ocr的文字区域检测任务中)的坐标做透视变换;如果只是简单的使用矩形的四个坐标点做透视变换,那么新的标签也不会贴合相应的目标检测区域;

好文章链接:

 (学习笔记)透视变换及其python实现_lytlysll的博客-CSDN博客解决透视变换后图片信息丢失的问题,附程序_xiaoyeer666的博客-CSDN博客python cv2中的透视变换 - 江南烟雨尘 - 博客园Python 计算机视觉(五)特别篇 —— 透视变换_一马归一码的博客-CSDN博客python opencv 图像透视变换,图像平移,图像旋转,图像翻转_luolinll1212的专栏-CSDN博客


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部