Python OpenCV透视转换问题

2024-05-15 23:57:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个脚本来处理一个图像并提取一个PDF417二维条码,然后将其解码。我提取的ROI没有问题,但是当我试图使用cv2.warpPerspective来纠正透视图时,结果并不像预期的那样。在

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

这是生成的图像: Warped

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

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中的透视失真量最小,但可能会影响解码过程。在

那么,有没有办法消除透视失真呢?我做错什么了吗?这是已知的错误还是什么?任何帮助都是非常欢迎的。在

顺便说一下,我使用的是opencv3.3.0


Tags: or代码图像脚本box错误np解码
1条回答
网友
1楼 · 发布于 2024-05-15 23:57:25

看起来你给的图像坐标是(y,x)。我知道在OpenCV中坐标的解释是不同的。 在homography example code中,它们提供的坐标为(x,y)-至少基于它们在此片段中使用的“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。在

相关问题 更多 >