見出し画像

Python, OpenCVで指定した色の抽出と別の色への置換を実装する

Python, OpenCVで指定した色の抽出と別の色への置換を実装します.
本稿では,Cityscapesデータセットのカラーマスキング画像の内,人だけを抽出し,白色に置換します.

有料枠設定にしていますが,下記のサイトで無料でみれます.youtubeの投げ銭的な物として,お考えください.

本稿の成果物

画像5

特定の色を抽出する

ここでは特定の色を抽出して,人のマスキングのみを残した画像を作成します.
人のマスキングの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

画像1

extract.png

画像2


特定の色を別の色に置換する


抽出した人のマスキングを特定の色,ここでは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

画像3


replace.png

画像4


参考サイト

ここから先は

0字

¥ 100

この記事が気に入ったらサポートをしてみませんか?