どのようにPythonを利用して自分の顔写真に小さな国旗(小さい月餅)を加えますか?



今年の国慶節も中秋節で、まずみんなの祝日の楽しみを祈って、本文はPythonを使って自分の顔写真に小さな国旗や小さな月餅を加えます。
国旗
国旗については、Pythonを使って描くことができます。Pythonライブラリはみんながよく知っているturtleです。私たちの五星紅旗の構成要素は赤い底と黄色の主星と四つの黄色の副星があります。
まず長方形の赤い底を描きます。コードは次のようになります。

turtle.setup(600, 400, 0, 0)
turtle.bgcolor("red")
効果は以下の通りです

次に主星を描きます。コードは次のようになります。

turtle.fillcolor("yellow")
turtle.color('yellow')
turtle.speed(10)
#   
turtle.begin_fill()
turtle.up()
turtle.goto(-280,100)
turtle.down()
for i in range (5):
 turtle.forward(150)
 turtle.right(144)
turtle.end_fill()
効果は以下の通りです

最後に4つの副星を描いて、コードは下記の通り実現します。

#   1
turtle.begin_fill()
turtle.up()
turtle.goto(-100,180)
turtle.setheading(305)
turtle.down()
for i in range (5):
 turtle.forward(50)
 turtle.left(144)
turtle.end_fill()
#   2
turtle.begin_fill()
turtle.up()
turtle.goto(-50,110)
turtle.setheading(30)
turtle.down()
for i in range (5):
 turtle.forward(50)
 turtle.right(144)
turtle.end_fill()
#   3
turtle.begin_fill()
turtle.up()
turtle.goto(-40,50)
turtle.setheading(5)
turtle.down()
for i in range (5):
 turtle.forward(50)
 turtle.right(144)
turtle.end_fill()
#   4
turtle.begin_fill()
turtle.up()
turtle.goto(-100,10)
turtle.setheading(300)
turtle.down()
for i in range (5):
 turtle.forward(50)
 turtle.left(144)
turtle.end_fill()
最終効果は以下の通りです。

月餅
月餅についてもPythonで描いてもいいです。月餅の構成要素は主に外層の丸い模様の輪郭、内層の輪郭と文字が含まれています。
まず外層の丸い模様の輪郭を描きます。コードは次のようになります。

turtle.speed(100)
turtle.color("#F5E16F")
for i in range(20):
 #      18 
 turtle.right(18)
 turtle.begin_fill()
 #        
 turtle.forward(220)
 #      40    
 turtle.circle(40, 180)
 #         (0,0)
 turtle.goto(0, 0)
 turtle.right(360)
 turtle.end_fill()
効果は以下の通りです

次に内側の輪郭を描き、コードは次のようになります。

#       
turtle.pensize(20)
#     (  、  )
turtle.color("#F5E16F", "#FF9933")
goto(0, -200)
#       
turtle.begin_fill()
turtle.circle(200)
#     
turtle.end_fill()
turtle.right(360)
turtle.color('#F5E16F')
goto(0, -180)
for i in range(12):
 turtle.begin_fill()
 turtle.circle(60, 120)
 turtle.left(180)
 turtle.circle(60, 120)
 turtle.end_fill()
効果は以下の通りです

最後に文字を追加します。例えば、小豆餡は小豆の2文字を追加します。コードは次のようになります。

turtle.color("#F5E16F")
turtle.write("  ", font=("  ", 60, "bold"))
最終効果は以下の通りです。

顔写真に国旗(月餅)を入れます。
最後に、先ほど描いた国旗や月餅を自分の顔写真に載せます。PythonライブラリはOpenCVで、pip install opencv-pythonコマンドを使ってインストールすればいいです。もし速度が遅すぎるなら、pip install -i https://mirrors.aliyun.com/pypi/simple/ opencv-pythonを使ってインストールを加速できます。
この機能は実現しても比較的に簡単で、10数行のPythonコードで解決できます。コードは下記のようになります。

#          
img_head = cv2.imread('head.jpg')
img_flag = cv2.imread('flag.png')
#            
w_head, h_head = img_head.shape[:2]
w_flag, h_flag = img_flag.shape[:2]
#         
scale = w_head / w_flag / 4
#     
img_flag = cv2.resize(img_flag, (0, 0), fx=scale, fy=scale)
#         
w_flag, h_flag = img_flag.shape[:2]
#   3        
for c in range(0, 3):
 img_head[w_head - w_flag:, h_head - h_flag:, c] = img_flag[:, :, c]
#       
cv2.imwrite('new_head.jpg', img_head)
もし私の元の顔写真が次のような場合:

顔写真に小さな国旗をつけると、次のような効果があります。

顔写真に小さな月餅を添えて、効果は以下の通りです。

締め括りをつける
ここで、Pythonを利用して自分の顔写真に国旗(小さい月餅)を付ける方法について紹介しました。これに関連してPythonが顔写真に国旗(小さい月餅)を付ける内容は以前の文章を検索してください。または下記の関連記事を引き続きご覧ください。これからもよろしくお願いします。