やりたいこと
以下の画像があります。
これは事前の元画像を二値化したものでありますが、ここに写っている白黒画像について、pythonのopencvを用いて白色→赤色に黒色→青色になどと自由に色を変換したいと考えています。
以下、元のソースコードです。
import cv2 import numpy as np import matplotlib.pyplot as plt # (coins.png)の読み込み img = cv2.imread('tmp/coins.png') # グレースケールに変換する gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) # Otuの二値化(入力はgrayのみ) ret, bin_img = cv2.threshold(gray, 0, 255, cv2.THRESH_OTSU) # 輪郭の抽出 contours, _ = cv2.findContours(bin_img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # 小さい輪郭は誤検出として削除 # 輪郭内部を塗りつぶすdrawContours draw = cv2.drawContours(bin_img, contours, -1, color=255,thickness=-1) print(draw.shape) print(draw) (246, 300) [[255 0 0 ... 0 0 0] [255 0 0 ... 0 0 0] [255 0 0 ... 0 0 0] ... [255 0 0 ... 0 0 0] [255 0 0 ... 0 0 0] [255 0 0 ... 0 0 0]]
試したこと
以下のようにnp.whereなどで特定の画素をいじれないか見てみましたが、そもそもrgbの色情報などがないため、特定の色に変換することができない??
draw = np.where(draw[:,0] >= 255, 255, 100)
最後に
どうか白黒rgbではない画像を白→赤、黒→青のように特定の色に変換する方法をアドバイスしてくれると助かります。
どうかよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー