OpenCV图片矫正

打印 上一主题 下一主题

主题 810|帖子 810|积分 2430

在盘算机视觉领域,图片矫正是一项非常重要的技能,特别是在处置惩罚因拍摄角度问题导致的图像失真时。

实验原理

图片矫正主要依靠于透视变换(Perspective Transformation)。透视变换是一种几何变换,可以将图像中的一个四边形地区映射到另一个四边形地区。这在处置惩罚如拍摄角度不正导致的图像扭曲时非常有用。
透视变换矩阵

透视变换的焦点是找到一个变换矩阵,这个矩阵可以将原图像中的点映射到目标图像中的点。OpenCV 提供了 cv2.getPerspectiveTransform 函数来盘算这个变换矩阵。我们必要指定原图像中的四个点和目标图像中的四个点,这八个点将用于盘算变换矩阵。
变换应用

一旦我们有了变换矩阵,就可以利用 cv2.warpPerspective 函数将原图像变换为目标图像。这个函数会应用透视变换矩阵,天生校正后的图像。
实验代码

下面是利用 OpenCV 进行图片矫正的完整代码:
  1. import cv2
  2. import numpy as np
  3. # 1、读取一张图片
  4. img = cv2.imread("./youhua.png")
  5. # 2、获取透视变换矩阵
  6. # 原图中的四个点(按顺时针或逆时针顺序选择四个顶点)
  7. points1 = np.array([[175, 143], [642, 35], [88, 494], [659, 553]],
  8.                    dtype=np.float32)
  9. # 目标图中的四个点(新的图像区域的四个顶点)
  10. points2 = np.array([[0, 0], [img.shape[1], 0], [0, img.shape[0]], [img.shape[1], img.shape[0]]],
  11.                    dtype=np.float32)
  12. # 计算透视变换矩阵
  13. M = cv2.getPerspectiveTransform(points1, points2)
  14. # 3、透视变换
  15. # 应用透视变换矩阵进行图像矫正
  16. img_warp = cv2.warpPerspective(img, M, (img.shape[1], img.shape[0]))
  17. # 显示原图和矫正后的图像
  18. cv2.imshow('Original Image', img)
  19. cv2.imshow('Corrected Image', img_warp)
  20. cv2.waitKey(0)
  21. cv2.destroyAllWindows()
复制代码

实验现象

  • 原图显示:起首,代码读取并显示原始图像,这张图像大概由于拍摄角度问题而显得扭曲。
  • 矫正后图像显示:应用透视变换后,图像中的扭曲部门被矫正,图像看起来更加正视。

注意事项



  • 点的选择:选择原图像中的四个点时,必要确保这些点能够构成一个四边形,并且这个四边形的大致外形应该与目标图像中的四边形相匹配。
  • 图像尺寸:在进行透视变换时,目标图像的尺寸必要与原图保持划一,否则大概会导致图像被拉伸或压缩。



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

西河刘卡车医

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表