初めに
皆さん、円の画像を等分割したいときってありますよね。
「急に言われてもないけど…」と思うかもしれませんが、例えば、数値が与えられていない円グラフや、角度が与えられていない角度の問題を解くうえで役に立ちます。
全然大小が区別できない円グラフ
全く予測できない角度の問題(ラングレー問題)
今回は、画像をある特定の点から放射状に回転しながら等分割する方法を解説していきます‼
(うまく説明できない…)
予告動画
堂々と見出しまで取ってすみません。
私のサイトがYoutubeにも進出するために作ったこの記事の予告動画です‼
これを見ると、プログラムの仕組みがわかります‼
チャンネル登録も忘れずに‼
↓予告動画はこちら!
(動画編集の技術がつたなくてすみません。)
では、今からプログラムを作って実行していきましょう‼
プログラムの作成
まず、円や扇型の画像を中心から等分割するプログラムを作っていきます。
自分でツールを作ってもよかったんですが、自分で仕組みを理解しながら使っていただく方が、汎用性が高く、アレンジもしやすいので、プログラミングを選びました。
Pythonをインストールする
私が作ったプログラムの言語はpythonなので、まずはpythonをインストールしましょう‼
めちゃくちゃムズそうだと思うかもしれませんが、exeをダウンロードして開くだけです。普通のアプリをインストールするときと同じだと思ってください。
(PC版LINEを入れるより100倍楽です。)
↓pythonのインストール方法はこちら‼‼
pythonのインストールは成功しましたか。
つぎは、プログラムを動かす上での準備をしていきたいと思います‼
ライブラリのインストール
pythonにはライブラリという、ブラウザでいうところの「拡張機能」みたいなものが存在します。今から必要なライブラリをインストールしていきます。
コマンドプロンプトを開いて、下のように「pip install opencv-python」と入力してEnterを押してください。
これで、赤色の文字で書かれたエラーが出てこなかったらインストール成功です。(わからないエラーがが出てきたらコメント欄で聞いてください。)
画像をちょっとだけ分析
画像を少し分析しておきます。
下のページを開いてください。
↓開くとこんな感じ。
そして、画面右上の「File」⇒「Load image」というところから、写真を読み込みます。
読み込んだら、下のような画面が出てくるので、等分割したい場所の中心の座標にカーソルを合わせて右上の青い丸で囲ったところの座標を記録しておいてください。
プログラムを作ろう!
では、実際にプログラムを作っていきましょう‼
まず、メモ帳を開いてください。
そして、下のコードをコピペしてください。
import cv2
import os
import shutil
#ファイル名入力
name="ggg.png"
img = cv2.imread(name)
#円の中心の座標を入力。横、縦の順で入力。
cent=[262,249]
center=(cent[0],cent[1])
height,weight=img.shape[:2]
shutil.copy(name, 'img0.png')
for x in range(100):
#中心座標のxを取ってくる。
x=int(x)
file_name=f"img{x}.png"
img2=cv2.imread(file_name)
#線を黒で引く。 RGB表記(0,0,0)
#ただし、10本ごとに赤色にする
if x==100:
pass
elif x%10==0:
img2[:,cent[0],:]=0,0,255
else:
img2[:, cent[0], :] = 0,0,0
#3.6度ずつずらしていく。
trans = cv2.getRotationMatrix2D(center, 3.6 , 1)
#アフィン変換
image2 = cv2.warpAffine(img2, trans, (weight,height))
cv2.imwrite(f"img{x+1}.png",image2)
#途中で作ったファイルをすべて削除する。出力結果はimg100.pngを参照。
os.remove(file_name)
↓こんな感じ。
そして、これを等分割したい画像があるディレクトリに下のように保存してください。
これで、プログラムの作成は完了です。
それでは実行してみましょう‼
\Pythonを使いこなせたら超便利‼/
↑完全オンライン完結,現役エンジニアが徹底サポート,締め切り迫る‼
プログラムを実行
では、実際にプログラムを実行していきましょう!
まず、先ほどのファイルを保存したディレクトリに行って、アドレスバーにcmdと入力してEnterを押してください。
↑こんな感じ。
すると、コマンドプロンプトが起動します。
そして、コマンドプロンプトが開いたら、「python 等分割.py」と入力してEnterを押してください。
↑こんな感じで数秒したら処理が終わります。
これで、処理の実行は完了です。
先ほどのディレクトリに行ってみると、こんな感じで、中心から等分割された画像が入っています。
分割する前と比べるとこんな感じ。
青が36%、オレンジが36%、灰色が28%なのがすぐにわかります。
Before
After
これで、円や扇形を中心から等分割する方法についての解説は終わりです。
\Pythonを使いこなせたら超便利‼/
↑完全オンライン完結,現役エンジニアが徹底サポート,締め切り迫る‼
終わりに
いかがでしたか。
これを応用すれば、様々な場面で非常に役立つと思います。
Pythonも少し勉強してみると、大変便利なので、この際少し勉強してみませんか?
また、ほかにも面白い記事たくさんありますので、ほかの記事も一緒に見ていただければ嬉しいです。
それでは次の記事で‼
プロフィール
このブログの情報が少しでも役に立てれば嬉しいです。