画像から1ピクセルずつ取り出してアルファチャンネルをチェックし、完全に透明だったらその画素を真っ白なピクセルで置き換えます。
import cv2
import numpy as np
img = cv2.imread(image_file_path, cv2.IMREAD_UNCHANGED)
# 画像から透明ピクセル(アルファチャンネルが0)を抜き出し、白ピクセルで置き換える
# np.where使いたかったけど使い方がわからんかったのです
for y in range(img.shape[0]):
for x in range(img.shape[1]):
if img[y, x, 3] == 0:
img[y, x] = [255, 255, 255, 255]
# jpg保存をもってアルファチャンネル削除に替える
cv2.imwrite(dst_file_path, img)
結果は下記のようになりました。
アルファ付きpngからいい感じにjpgに生まれ変わらせました。クロブチレトロみたいな半透明ピクセルは上手く処理しきれてない感じがありますけどここは妥協しましょう pic.twitter.com/5ywuhIiLsq
— ヒト🏃♀️速バラ撒きおじさん/あつし (@Anaakikutsushit) July 26, 2019