pythonの透過処理をopencvを使って実現したいです。
透過処理はpngファイルでしか行えないという記事を読んだのでjpgファイルからpngファイルに変換してから透過処理をしました。
写真は背景を緑色にして(いわゆるグリーンバック)画像を読み込み、RGBからHSV領域に変換してから緑色の削除を試みましたが、図のように紫色になりました。
私はjpgファイルをうまくpngファイルに変換できていないのではと考えて、そこで以下のウェブサイトを使用して画像のリサイズを行った後画像を右クリックして保存ボタンを押して(この時のファイル保存形式がpng)再度同じプログラムを走らせました。すると今度は透過することができました。
https://www.peko-step.com/tool/resize.html
この原因がよくわからなかったので今回質問させていただきました。この原因と解決方法について解説してくださると幸いです。
![
元画像
透過失敗画像
透過成功画像
jpgからpngの変換はopencvを使ってcv2.imreadで読み込みcv2.imwriteでpng出力しただけです。
python
1import cv2 2 3img = cv2.imread("touka8/1_overlay.png", -1) 4# HSVに変換 5hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) 6# クロマキーによるマスク生成 7mask = cv2.inRange(hsv, (60, 50,50), (86, 255, 255)) 8 9ksize=15 10#中央値フィルタ 11mask = cv2.medianBlur(mask,ksize) 12 13img2 = cv2.bitwise_not(img, img, mask=mask) 14cv2.imwrite('overlay.png',img2) 15
バージョン
Python 3.8.3
cv2 4.4.0
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/21 06:47