Python, OpenCVで指定した色の抽出と別の色への置換を実装する
Python, OpenCVで指定した色の抽出と別の色への置換を実装します.
本稿では,Cityscapesデータセットのカラーマスキング画像の内,人だけを抽出し,白色に置換します.
有料枠設定にしていますが,下記のサイトで無料でみれます.youtubeの投げ銭的な物として,お考えください.
本稿の成果物
特定の色を抽出する
ここでは特定の色を抽出して,人のマスキングのみを残した画像を作成します.
人のマスキングのRGBは,cityscapesScripts/cityscapesscripts/helpers/labels.py (opens new window)よりRGB=(220, 20, 60)となります.
以下のコードではBGRをベースに抽出しています.
import cv2
import numpy as np
image = cv2.imread('color_mask_image.png') # ファイル読み込み
# bgrでの色抽出
bgrLower = np.array([60, 20, 220]) # 抽出する色の下限(bgr)
bgrUpper = np.array([60, 20, 220]) # 抽出する色の上限(bgr)
img_mask = cv2.inRange(image, bgrLower, bgrUpper) # bgrからマスクを作成
extract = cv2.bitwise_and(image, image, mask=img_mask) # 元画像とマスクを合成
cv2.imwrite('extract.png',extract)
color_mask_image.png
extract.png
特定の色を別の色に置換する
抽出した人のマスキングを特定の色,ここではBGR=(255, 255, 255)に置換します.
以下のコードで実行します.
import cv2
import numpy as np
result = cv2.imread('result.png')
# 特定の色を別の色に置換する
before_color = [60, 20, 220]
after_color = [255, 255, 255]
result[np.where((result == before_color).all(axis=2))] = after_color
cv2.imwrite('replace.png',result)
extract.png
replace.png
参考サイト
ここから先は
0字
¥ 100
この記事が気に入ったらサポートをしてみませんか?