OpenCV では、行列を使い色の重みを調節できる。下記コードでは、行列 rc を使って画像を調整している。rc の数値の重みは、1行目:青→青、青→緑、青→赤、2行目:緑→青、緑→緑、緑→赤、3行目:赤→青、赤→緑、赤→赤 を意味する。
import cv2
import sys
import numpy as np
# 画像を加工する
def mkimg(img):
rc = [[1.2, 0. , 0. ],
[0.1, 1.2, 0. ],
[0.1, 0. , 1.2]]
img2 = bgrtune(img,rc)
return img2
# 行列でBGRを編集する
def bgrtune(img,rc):
img2 = np.dot(np.float32(img) , rc)
return ct(img2)
# 値を0-255にclipして、typeをuint8にする
def ct(img):
return np.clip(img,0,255).astype(np.uint8)
file_name = sys.argv[1]
img = cv2.imread(file_name)
img2 = mkimg(img)
cv2.imwrite(file_name.replace(".",".out."),img2)
今回、曇の日に撮った写真を明るくするために、各色を 1.2 倍し、青成分の強くするために緑→青、赤→青を各 0.1 だけ混ぜた。
コメント