【问题标题】:cv2 imread transparency gonecv2 imread 透明度消失了
【发布时间】:2018-01-19 06:28:19
【问题描述】:

我有一张从网上下载的图片(验证码)。

当我加载到opencv 时,它似乎失去了它的属性,或者只是将透明背景与深色/黑色混合:

目前代码除了再次加载一个文字什么都不做:

captchaImg = cv2.imread('captcha1.png')
cv2.imwrite("captcha2.png", captchaImg)

我也尝试使用选项 0、1、2、3 进行加载,但结果相同。

【问题讨论】:

    标签: python-3.x transparency cv2 imread


    【解决方案1】:

    嗯,这是 opencv 的一个问题,它有一个 opencv 的解决方案,但它有点复杂,所以我继续使用另一个我打算以任何方式使用的库 (PIL)。 基本上你所做的就是在透明图像后面放一张白色图像,然后你就可以解决问题了。 代码如下:

    image = Image.open("captcha1.png")
    image.convert("RGBA")
    canvas = Image.new('RGBA', image.size, (255,255,255,255)) # Empty canvas colour (r,g,b,a)
    canvas.paste(image, mask=image) # Paste the image onto the canvas, using it's alpha channel as mask
    canvas.save("captcha1.png", format="PNG")
    

    希望对遇到同样问题的人有所帮助。

    【讨论】:

      【解决方案2】:

      使用提供的常量可能会有所帮助。我做的相当于

      captchaImg = cv2.imread('captcha1.png', cv2.IMREAD_UNCHANGED)
      

      读取 alpha 通道(如果有的话)。 REPL 说 cv2.IMREAD_UNCHANGED 是 -1

      【讨论】:

        猜你喜欢
        • 2018-09-23
        • 2016-06-06
        • 2020-05-08
        • 2016-06-09
        • 2019-09-17
        • 2015-04-23
        • 2021-04-05
        • 2017-11-17
        • 1970-01-01
        相关资源
        最近更新 更多