【问题标题】:Image Warping Using Python - Linux使用 Python 进行图像变形 - Linux
【发布时间】:2023-11-10 23:10:01
【问题描述】:

我需要使用我的 Raspberry Pi 4 在 Python 中扭曲图像的图像。好吧,我应该说 unwarp。我正在编写一个脚本来解决验证码以自动化任务。所有的 CAPTCHA 代码都由 4 个相同字体的字母和数字组成,并且都以相同的方式扭曲,形成一个巨大的侧面“S”。我需要做的是解开图像以使其更平坦,以便验证码读取它。关于如何解决这个问题的任何建议?抱歉,我完全被难住了,甚至不知道如何开始这项任务。我已经尝试安装 OpenCV,但无论我尝试什么,我都无法让它在我的 Raspberry Pi 4(运行 Raspbian)上工作。

*旁注,为了测试并确保扭曲理论有效,我将一些验证码带到 Photoshop 并以相同的模式扭曲它们,并将它们展平到足以让我的 Pytesseract 脚本能够读取它正好。另外,会上传几个验证码的图片。

提前感谢您的帮助!

【问题讨论】:

    标签: python opencv raspberry-pi captcha image-manipulation


    【解决方案1】:

    你可以使用 cv2.remap 来做这种事情,例如

    import numpy as np
    import cv2
    
    def remap_test(img_arr):
        H,W = img_arr.shape[0:2]
        map = np.mgrid[0:H,0:W]
        # start off with a 'do-nothing' or identity xform, add to that as desired
        map_x = map[1].astype(np.float32)
        map_y = map[0].astype(np.float32)
        # add a sine-wave offset to the x-values
        for i in range(H):
            map_x[i,:]=map_x[i,:]+30*np.sin(2*3.14*float(i)/H)
        img_warped = cv2.remap(img_arr,map_x,map_y,cv2.INTER_LINEAR)
    

    一些示例结果here 我使用上面的正弦来制作近似 S。 您可以用您正在寻找的确切曲线替换该正弦,例如,如果您跟踪从直线到 S 上相应点的偏移量。

    【讨论】:

    • 非常感谢!我会继续尝试在我的 Raspberry Pi4 上安装 cv2。一旦我这样做,我会试试这个!看起来很有前途!!
    最近更新 更多