cv2 imread 透明度消失了
cv2 imread transparency gone
我有一张从网上下载的图片(验证码)。
当我加载到 opencv
时,它似乎失去了它的属性或者只是将透明背景与 dark/black 颜色混合:
目前代码只做再次加载写入:
captchaImg = cv2.imread('captcha1.png')
cv2.imwrite("captcha2.png", captchaImg)
我也试过加载选项 0、1、2、3,但结果是一样的。
好吧,这是 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")
希望对遇到同样问题的人有所帮助。
使用提供的常量可能会有所帮助。我做的相当于
captchaImg = cv2.imread('captcha1.png', cv2.IMREAD_UNCHANGED)
读取 alpha 通道(如果有的话)。 REPL 说 cv2.IMREAD_UNCHANGED
是 -1
我有一张从网上下载的图片(验证码)。
当我加载到 opencv
时,它似乎失去了它的属性或者只是将透明背景与 dark/black 颜色混合:
目前代码只做再次加载写入:
captchaImg = cv2.imread('captcha1.png')
cv2.imwrite("captcha2.png", captchaImg)
我也试过加载选项 0、1、2、3,但结果是一样的。
好吧,这是 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")
希望对遇到同样问题的人有所帮助。
使用提供的常量可能会有所帮助。我做的相当于
captchaImg = cv2.imread('captcha1.png', cv2.IMREAD_UNCHANGED)
读取 alpha 通道(如果有的话)。 REPL 说 cv2.IMREAD_UNCHANGED
是 -1