cv2 imread透明度消失了

时间:2017-08-10 20:54:16

标签: transparency imread cv2

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

Initial Image

当我加载到opencv时,它似乎松散了它的属性或简单地将透明背景与深色/黑色混合:

Processed Image

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

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

我已经尝试加载选项0,1,2,3,但结果是一样的。

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

这是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")

我希望它可以帮助有同样问题的人。