【问题标题】:Python OpenCV - perspective transformation issuesPython OpenCV - 透视变换问题
【发布时间】:2018-04-24 03:18:57
【问题描述】:

我正在编写一个脚本来处理图像并提取 PDF417 二维条码,然后将其解码。我正在毫无问题地提取 ROI,但是当我尝试使用 cv2.warpPerspective 纠正视角时,结果与预期不符。

以下是提取的条形码,红点是检测到的角点:

这是生成的图像:

这是我用于转换的代码(值由脚本找到,但之前的图像如下):

box_or = np.float32([[23, 30],[395, 23],[26, 2141],[389, 2142]])
box_fix = np.float32([[0,0],[415,0],[0,2159],[415,2159]])
M = cv2.getPerspectiveTransform(box_or,box_fix)
warped = cv2.warpPerspective(img,M,(cols,rows))

我检查过,没有发现代码有什么问题,但转换肯定是错误的。提取的 ROI 中的透视失真量最小,但可能会影响解码过程。

那么,有没有办法摆脱透视失真?难道我做错了什么?这是一个已知的错误还是什么?非常欢迎任何帮助。

顺便说一句,我使用的是 OpenCV 3.3.0

【问题讨论】:

    标签: python opencv homography


    【解决方案1】:

    看起来您将图像坐标指定为 (y, x)。我知道坐标的解释在 OpenCV 中有所不同。 在homography example code 中,他们将坐标提供为 (x,y) - 至少基于他们在此 sn-p 中使用的“h”和“w”:

    h,w = img1.shape
    pts = np.float32([ [0,0],[0,h-1],[w-1,h-1],[w-1,0] ]).reshape(-1,1,2)
    dst = cv2.perspectiveTransform(pts,M)
    

    所以尝试将坐标作为 (x,y) 提供给 getPerspectiveTransform 和 warpPerspective。

    【讨论】:

      猜你喜欢
      • 2021-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-26
      • 1970-01-01
      • 2021-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多