Qixiの告白アーティファクトをPythonで作成する

今日はQixiフェスティバルです。現代人が作成した502と比較すると、520ではありません。Qixiは伝統的な中国の意味でのバレンタインデーです。この記事では、いくつかのPython告白プログラムを共有しています。カップルは今すぐ学習して使用できます。それを集めてください、多分あなたはそれを次回使うでしょう。

ラブツリー

まず、愛の果実でいっぱいの木を描きましょう。

主な実装コード:

# 愛を描く
def love(x, y): 
 lv = turtle.Turtle()
 lv.hideturtle()
 lv.up()
 # ポジショニング
 lv.goto(x, y)
 # 弧を描く
 def curvemove():for i inrange(20):
   lv.right(10)
   lv.forward(2)

 lv.color('red','pink')
 lv.speed(10000000)
 lv.pensize(1)
 lv.down()
 lv.begin_fill()
 lv.left(140)
 lv.forward(22)curvemove()
 lv.left(120)curvemove()
 lv.forward(22)
 # 描画後にリセット
 lv.left(140)  
 lv.end_fill()

# ツリーを描く
def tree(branchLen, t):
 # 残りのブランチが少なすぎるため、再帰を終了できません
 if branchLen >5:
  # 枝の残りの長さが短い場合は緑色に変わります
  if branchLen <20:  
   t.color("green")
   t.pensize(random.uniform((branchLen +5)/4-2,(branchLen +6)/4+5))
   t.down()
   t.forward(branchLen)love(t.xcor(), t.ycor())  
   t.up()
   t.backward(branchLen)
   t.color("brown")return
  t.pensize(random.uniform((branchLen +5)/4-2,(branchLen +6)/4+5))
  t.down()
  t.forward(branchLen)
  # 次の再帰
  ang = random.uniform(15,45)
  t.right(ang)
  # 長さをランダムに減らす
  tree(branchLen - random.uniform(12,16), t)  
  t.left(2* ang)
  # 長さをランダムに減らす
  tree(branchLen - random.uniform(12,16), t)  
  t.right(ang)
  t.up()
  t.backward(branchLen)

告白バルーン

告白バルーンの実現を見てみましょう。達成される効果は、上向きに浮かぶさまざまな色のバルーンをランダムに生成し、バルーンをクリックして壊すというものです。

主な実装コードは次のとおりです。

# バルーン
balloons =[]
# 色
color_option =["red","blue","green","purple","pink","yellow","orange"]
# バルーンサイズ
size =50
# バルーンライン
def line(x, y, a, b, line_width=1, color_name="black"):up()goto(x, y)down()color(color_name)width(line_width)goto(a, b)

def distance(x, y, a, b):
 # マウスのクリック位置とバルーン座標の間の距離を決定します
 return((a - x)**2+(b - y)**2)**0.5
def tap(x, y):for i inrange(len(balloons)):
  # キュー内のバルーンの1つをクリックするかどうかを決定します
  ifdistance(x, y, balloons[i][0], balloons[i][1])<(size /2):
   # バルーンを削除
   balloons.pop(i)return  
def draw():
 # クリアキャンバス
 clear()for i inrange(1,(len(balloons)+1)):line(balloons[-i][0], balloons[-i][1], balloons[-i][0], balloons[-i][1]- size *1.5,1)up()goto(balloons[-i][0], balloons[-i][1])
  # 原点を描きます。パラメータはサイズと色です。
  dot(size, balloons[-i][2])
  # バルーンの上昇を模倣するように縦座標を変更します
  balloons[-i][1]= balloons[-i][1]+1
 # キャンバスを変更する
 update()  
def gameLoop():
 # 1 /バルーンを生成する50の確率
 ifrandrange(0,50)==1:
  # バルーン座標から境界位置のバルーンサイズを引いたもの
  x =randrange(-200+ size,200- size)
  # カラーキューで色をランダムに選択します
  c =choice(color_option)
  # バルーンキューを追加
  balloons.append([x,-200- size, c])draw()ontimer(gameLoop,10)

告白カード

Pythonを使用して、テーマに適したいくつかの詩を元の写真に追加して、告白カードを作成できます。

元の画像:

効果画像:

主な実装コードは次のとおりです。

img = cv2.imread('test.png')
mask = np.zeros(img.shape[:2], np.uint8)
size =(1,65)
bgd = np.zeros(size, np.float64)
fgd = np.zeros(size, np.float64)
rect =(1,1, img.shape[1], img.shape[0])
cv2.grabCut(img, mask, rect, bgd, fgd,10, cv2.GC_INIT_WITH_RECT)
mask2 = np.where((mask ==2)|(mask ==0),1,255)
img = img.astype(np.int32)
img *= mask2[:,:, np.newaxis]
img[img>255]=255
img =img.astype(np.uint8)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img = Image.fromarray(img,'RGB')
img.save('test1.jpg')
fp =open(r"word.txt","r", encoding="utf-8")
text = fp.read()
mask_pic=np.array(Image.open(r"test1.jpg"))
wordcloud =WordCloud(font_path='hyr3gjm.ttf',mask=mask_pic,max_words=200).generate(text)
image=wordcloud.to_image()
image.save("wordcloud2.png")
cloud_data = np.array(image)
alpha = np.copy(cloud_data[:,:,0])
alpha[alpha>0]=255
new_image = Image.fromarray(np.dstack((cloud_data, alpha)))
card = Image.open("test.png")
card = card.convert("RGBA")
card.paste(new_image,(0,0), mask=new_image)
card.save("card.png")

Recommended Posts

Qixiの告白アーティファクトをPythonで作成する
告白プログラムをpythonで書く方法
pythonでguiを書く
pythonでクラスを書く方法
pythonでreturnを書く方法
pythonでwinプログラムを書く方法
pythonでtryステートメントを書く方法
Pythonのシーケンステーブルとは
pythonの数値は可変型ですか
pythonで辞書を並べ替える方法
pythonにヘルパー関数はありますか
pythonの関数
Pythonゲームで重力をシミュレートする方法
真新しいUbuntuにPython3環境をインストールする
python-pythonを使用して小さなショッピングプログラムを作成します
pythonでゲームを書く方法を教えてください
Python書き込みTetris
pythonで番号のリストを理解する方法
Ubuntu14.04でPython仮想環境を作成する方法
PythonはFTPを実装して、ファイルをループでアップロードします
03.Pythonエントリの演算子
Pythonの結合関数
12.Python3でのネットワークプログラミング
pythonでステートメントを印刷する
Pythonでの同時リクエスト
Ubuntuにpythonをインストールする
Pythonでのコンテキスト管理
pythonの算術演算子
PythonでのMongoDBの使用
PythonのStr文字列
Pythonでの計算ジオメトリ
pythonで円の領域を見つける方法
Pythonで一般的に使用されるサードパーティライブラリの大規模なインベントリ