9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

人生にスパイスが欲しいので虹色に光るゲーミング文字を作った

Last updated at Posted at 2021-07-07

はじめに

最近雨で、家にいることが多いですよね。
となると、人生にスパイスが必要になるのは自明かと思います。

スパイスといえばやはり、笑い

笑いというのは一般に**「外的刺激によって、異なるイメージが作り出されることによる、脳の混乱が引き起こす反射的な反応であると考えられる。」**と言われております。

なので、真面目な資料の中に混入できるようにゲーミング文字を作りたいと思います。

#ゲーミング文字とは?

UNI_DSC9455_TP_V4.jpg

このように虹色に光るものをよく「ゲーミング」と称することがあります。

真面目なビジネスシーンや、シンプルなデザインにおいて
anime_1677.gif
というのは過度なノイズであると言えます。

こういったカラフルに光って存在感を出す文字を「ゲーミング文字」と定義させてください。

#作り方

まずは文字を用意しましょう
dame.png

これじゃぁ、誠意も何も感じない進捗だめですね。
怒られるのは嫌なので改造しましょう。

HSV色空間

今回のミソは色空間を使うことです。

hsv表記とは色を色相(Hue)・彩度(Saturation)・明度(Value)の3要素で表現する方法です。

色相が360で一周することにより疑似的に虹色を作り出すことが出来ます。

img_hsv001.png

このように変化するのでHSVの値を1ずつ変え、それらをRGB値で表記させる必要があります。

def hsv_to_rgb(h, s, v):
    bgr = cv2.cvtColor(np.array([[[h, s, v]]], dtype=np.uint8), cv2.COLOR_HSV2BGR)[0][0]
    return (bgr[2], bgr[1], bgr[0])

この関数を使っていきましょう。

カラフルな文字の作り方

今回は以下のプログラムを利用しました。

pic = cv2.imread("dame.png")
size = pic.shape
img = np.zeros(size, dtype=np.uint8)

for j in range(180):
    for i in range(img.shape[1]):
        # ここでスタート位置を変えている
        res = hsv_to_rgb((i+j) % 180,255,255)
        pts = np.array( [ [i,0], [i,img.shape[0]], [i+1, 0], [i+1,img.shape[0]]])
        dst = cv2.fillPoly(img, pts =[pts], color=(int(res[0]),int(res[1]),int(res[2])))
    transparence = (0,0,0)
    result = np.where(pic==transparence, dst, pic)
    ksize=7 
    result = cv2.medianBlur(result,ksize)
    cv2.imwrite(f"res/{j+1000}.jpg",result)

これで、以下のようなカラフルな進捗だめですを作れます。

image.png

hsvの値を少しずつ変えることによって疑似的に虹色が作れます。

さらにnp.whereを使って該当するところの色を変えています。

今回は黒い文字で書きましたので、黒い部分がすべて虹色に置き換わっていますね。

これらを見ているだけでも楽しいですが
これらを組み合わせてgifファイルを作っていきましょう。

gifファイル化

gifファイルを作るにはPILを使います。

pictures=[]
for tmp in pic:
    pictures.append(Image.open(tmp))
    pictures[0].save('dame.gif',save_all=True, append_images=pictures[1:], optimize=False, duration=1, loop=0)

これを実行させると
dame.gif

虹色に光る進捗だめが出来ました。

いいですね。

結論

画像処理を使って簡単にゲーミング文字を作成することが出来ました。

次の目標として、文字でもできるようにしたいですね。

正規分布を虹色に光らせましょう。

9
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?