2017-08-10 238 views
0

我有一个图像(验证码),我从网上下载。cv2 imread透明度不见了

Initial Image

当我加载到OpenCV的似乎失去它的属性或只是混合的透明背景与深色/黑色两种颜色:

Processed Image

目前的代码做什么,但加载再次写入:

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

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

回答

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

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

0

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

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

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