旅行好きなソフトエンジニアの備忘録

プログラミングや技術関連のメモを始めました

【OpenCV】 forループを使わずに指定した色を別の色に変更する

ディープラーニングの前処理として、画像のある色を別の色に変更しようとしていました。ただ、NumPyではforループをなるべく使用しないことが推奨されているため、どうやって実現すれば良いのか悩んでいましたが、ここ(Replace a range of colors with a specific color in python - OpenCV Q&A Forum)にアドバイスがありました。

import cv2
import numpy as np

image = cv2.imread('lenna.jpg')
# 画像の黒い部分を白に置き換える
black = [0, 0, 0]
white = [255, 255, 255]
image[np.where((image == black).all(axis=2))] = white