在盘算机视觉领域,图片矫正是一项非常重要的技能,特别是在处置惩罚因拍摄角度问题导致的图像失真时。
实验原理
图片矫正主要依靠于透视变换(Perspective Transformation)。透视变换是一种几何变换,可以将图像中的一个四边形地区映射到另一个四边形地区。这在处置惩罚如拍摄角度不正导致的图像扭曲时非常有用。
透视变换矩阵
透视变换的焦点是找到一个变换矩阵,这个矩阵可以将原图像中的点映射到目标图像中的点。OpenCV 提供了 cv2.getPerspectiveTransform 函数来盘算这个变换矩阵。我们必要指定原图像中的四个点和目标图像中的四个点,这八个点将用于盘算变换矩阵。
变换应用
一旦我们有了变换矩阵,就可以利用 cv2.warpPerspective 函数将原图像变换为目标图像。这个函数会应用透视变换矩阵,天生校正后的图像。
实验代码
下面是利用 OpenCV 进行图片矫正的完整代码:
- import cv2
- import numpy as np
- # 1、读取一张图片
- img = cv2.imread("./youhua.png")
- # 2、获取透视变换矩阵
- # 原图中的四个点(按顺时针或逆时针顺序选择四个顶点)
- points1 = np.array([[175, 143], [642, 35], [88, 494], [659, 553]],
- dtype=np.float32)
- # 目标图中的四个点(新的图像区域的四个顶点)
- points2 = np.array([[0, 0], [img.shape[1], 0], [0, img.shape[0]], [img.shape[1], img.shape[0]]],
- dtype=np.float32)
- # 计算透视变换矩阵
- M = cv2.getPerspectiveTransform(points1, points2)
- # 3、透视变换
- # 应用透视变换矩阵进行图像矫正
- img_warp = cv2.warpPerspective(img, M, (img.shape[1], img.shape[0]))
- # 显示原图和矫正后的图像
- cv2.imshow('Original Image', img)
- cv2.imshow('Corrected Image', img_warp)
- cv2.waitKey(0)
- cv2.destroyAllWindows()
复制代码
实验现象
- 原图显示:起首,代码读取并显示原始图像,这张图像大概由于拍摄角度问题而显得扭曲。
-
矫正后图像显示:应用透视变换后,图像中的扭曲部门被矫正,图像看起来更加正视。
注意事项
- 点的选择:选择原图像中的四个点时,必要确保这些点能够构成一个四边形,并且这个四边形的大致外形应该与目标图像中的四边形相匹配。
- 图像尺寸:在进行透视变换时,目标图像的尺寸必要与原图保持划一,否则大概会导致图像被拉伸或压缩。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |