したいこと
輪郭抽出をしてその外側を透明化して保存したい。
コード
python
1import cv2 2import numpy as np 3 4# 画像を読み込む。 5img = cv2.imread(r"C:\Users\hirayama\Desktop\python_test\Python.png") 6 7# グレースケールに変換する。 8gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 9 10# 2値化する。 11thresh, binary = cv2.threshold(gray, 230, 255, cv2.THRESH_BINARY_INV) 12 13# 輪郭を抽出する。 14contours, hierarchy = cv2.findContours( 15 binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE 16) 17 18# マスクを作成する 19mask = np.zeros_like(binary) 20 21# 輪郭内部(透明化しない画素)を255で塗りつぶす。 22for cnt in contours: 23 cv2.drawContours(mask, contours, -1, color=255, thickness=-1) 24 25# RGBAに変換する 26rgba = cv2.cvtColor(img, cv2.COLOR_RGB2RGBA) 27 28# マスクをアルファチャンネルに設定する。 29rgba[..., 3] = mask 30 31 32# すべての輪郭を描画 33#cv2.drawContours(img, contours, -1, color=(0, 255, 0), thickness=2) 34 35# 保存する。 36cv2.imwrite(r"C:\Users\hirayama\Desktop\python_test\rgba_Python.png", rgba) 37 38 39# 表示 40cv2.imshow("img", rgba) 41cv2.waitKey(0) 42
実行結果
解決したいこと
こちらをもろパクリさせていただいているので自分のミスかもしれませんが、思うように行かないのが引っかかって夜も眠れません、
すみません。コードを勉強してる段階なのでミスや知識不足が目立ってしまいます。
皆様のレビューをみて勉強していきたいです。。
追記
こちらはコードを実行されたときに表示された画像です。
この画像は、表示したとき、フォルダに保存したときは透明化されていないですl
回答1件
あなたの回答
tips
プレビュー