昔どっかの番組で
松崎しげるさんがどんどん黒くなったらいつ気づくのか?
みたいな番組をやっていたのを思い出しました。
今回はopencvを使って
画像の一部分の黒さを濃くするプログラムを作ってみました。
解説動画はこちら
ソースコードはこちら
画像はご自身で用意してくださいね。
ファイルパスの部分だけ
ご自身で用意したファイルに差し替えれば
動くと思います。
このプログラムですが
画像の色味を見てその濃さを調整するので
できれば顔以外は真っ黒な方が望ましいです。
スライダーで黒みを調整できます。
初期値は20で
この時は0%です。
スライドを左にずらして行けば
5%ずつ濃くなっていきます。
MAXにしてみると

ぶっちゃけ誰か分かりません!!!!
プログラム内で何をやっているかと言うと
まず赤みを判定して
顔のマスク部分を作る関数があります。
赤みの部分だけ抽出し
その濃さをスライダーの値から
計算して黒に近づけます。
画像は取り込んだ際に
配列で取り込まれているので
データ上は数値です。
RGB値だと
黒は0,0,0
白は255,255,255です。
単純に数値を
割って小さくすれば
黒に近づきます。
最後にマスク部分だけ
元の画像の色と入れ替えて表示
と言うことだけやっている
シンプルなプログラムです。
他の画像でも
色味を変えることはできますので
色々な方々でやってみてください。
本日はこれまで
それでは
松崎しげるさんがどんどん黒くなったらいつ気づくのか?
みたいな番組をやっていたのを思い出しました。
今回はopencvを使って
画像の一部分の黒さを濃くするプログラムを作ってみました。
解説動画はこちら
ソースコードはこちら
画像はご自身で用意してくださいね。
import cv2 import numpy as np import matplotlib.pyplot as plt from ipywidgets import interact, IntSlider %matplotlib inline def detect_red_color(img): hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) hsv_min = np.array([0,64,0]) hsv_max = np.array([30,255,255]) mask1 = cv2.inRange(hsv, hsv_min, hsv_max) hsv_min = np.array([150,64,0]) hsv_max = np.array([179,255,255]) mask2 = cv2.inRange(hsv, hsv_min, hsv_max) mask = mask1 + mask2 masked_img = cv2.bitwise_and(img, img, mask=mask) return masked_img img = cv2.imread(‘ファイルパス’) red_masked_img = detect_red_color(img) mask_img = cv2.cvtColor(red_masked_img, cv2.COLOR_BGR2RGB) rate1 = IntSlider(min=1 , max=20,step=1,value=20) @interact(rate1=rate1) def plot(rate1): mask = mask_img // 20 * rate1 mask[mask==0]=255 height, width, color = img.shape for y in range(0, height): for x in range(0, width): if (mask[y][x] < 240).all(): img[y][x] = mask[y][x] plt.figure(figsize=(16,9)) plt.imshow(img) plt.show()
ファイルパスの部分だけ
ご自身で用意したファイルに差し替えれば
動くと思います。
このプログラムですが
画像の色味を見てその濃さを調整するので
できれば顔以外は真っ黒な方が望ましいです。
スライダーで黒みを調整できます。
初期値は20で
この時は0%です。
スライドを左にずらして行けば
5%ずつ濃くなっていきます。
MAXにしてみると

ぶっちゃけ誰か分かりません!!!!
プログラム内で何をやっているかと言うと
まず赤みを判定して
顔のマスク部分を作る関数があります。
赤みの部分だけ抽出し
その濃さをスライダーの値から
計算して黒に近づけます。
画像は取り込んだ際に
配列で取り込まれているので
データ上は数値です。
RGB値だと
黒は0,0,0
白は255,255,255です。
単純に数値を
割って小さくすれば
黒に近づきます。
最後にマスク部分だけ
元の画像の色と入れ替えて表示
と言うことだけやっている
シンプルなプログラムです。
他の画像でも
色味を変えることはできますので
色々な方々でやってみてください。
本日はこれまで
それでは
コメントする