我有一個圖像(驗證碼),我從網上下載。cv2 imread透明度不見了
當我加載到OpenCV的似乎失去它的屬性或只是混合的透明背景與深色/黑色兩種顏色:
目前的代碼做什麼,但加載再次寫入:
captchaImg = cv2.imread('captcha1.png')
cv2.imwrite("captcha2.png", captchaImg)
我已經嘗試加載選項0,1,2,3但結果是一樣的。
我有一個圖像(驗證碼),我從網上下載。cv2 imread透明度不見了
當我加載到OpenCV的似乎失去它的屬性或只是混合的透明背景與深色/黑色兩種顏色:
目前的代碼做什麼,但加載再次寫入:
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