Python

【Pythonで作業自動化】画像処理編 〜複数の画像やグラフを整列して並べる〜

皆さんは画像やグラフを連続で並べたい時どうしていますか。
数が少なければ一つ一つ並ベれば良いですが、間隔を揃えたりしていると意外に時間がかかるものです。
本記事ではプログラミング初心者向けにPythonを使って複数の画像を読み込み、並べて表示するサンプル例を紹介します。

エクセルやそれ以外のソフトでも並べる事ができますが、
Pythonはコードの中身がシンプルで初心者でも1日あれば
見よう見まねで形になるのかなと感じています。

2つの例を紹介します。

①画像のファイル名を一つ一つ入力する必要があるもの

不規則で色々なファイル名のものを並べたい時に使えます

②画像のファイル名も自動的に認識してくれるもの

  ⇒連番など規則があるファイル名のものを並べたい時に使えます

★下記で紹介する.pyのファイルと同じフォルダ内に10枚の画像を用意して整列した例を紹介します
Python 画像整列

画像の大きさが異なるものでも整列することができます。

Python 画像整列 トリミング

画像の大きさを自動で揃えたい場合はトリミングすることができます。

トリミングについてはこちらの記事を参考にして下さい。

【Pythonで作業自動化】画像処理編 〜複数画像を連続でトリミングしていく〜 数が少なければ一つ一つ処理していけば良いですが、トリミング量を揃えたりしていると意外に時間がかかるものです。 そこで、本記事ではプ...

【画像のファイル名を指定して並べる】

infile[1]=”1.jpg” の ” ” 中身を画像のファイル名にしていくだけです。

imgname=”result_10″ の ” ” 中身は出力する時のファイル名を入力して下さい。

plt.subplot(2,5,i) で行列を指定します。(例:2×5)




from PIL import Image
import cv2
import numpy as np
import matplotlib.pyplot as plt

infile=[1,2,3,4,5,6,7,8,9,10,11]
image=[1,2,3,4,5,6,7,8,9,10,11]

infile[1]="1.jpg"
infile[2]="2.jpg"
infile[3]="3.jpg"
infile[4]="4.jpg"
infile[5]="5.jpg"
infile[6]="6.jpg"
infile[7]="7.jpg"
infile[8]="8.jpg"
infile[9]="9.jpg"
infile[10]="10.jpg"

imgname="result-10"
plt.figure(figsize=(20, 15))
plt.subplots_adjust(wspace=0.0, hspace=0.0)

for i in range(1, 11):  
    image[i] = cv2.imread(infile[i])
    image[i] = cv2.cvtColor(image[i], cv2.COLOR_BGR2RGB)
    plt.subplot(2,5,i)
    plt.subplots_adjust(hspace=0.0)
    plt.tick_params(labelbottom="off")
    plt.tick_params(labelleft="off")
    plt.tick_params(bottom="off")
    plt.tick_params(left="off")
    plt.gca().spines['right'].set_visible(False)
    plt.gca().spines['top'].set_visible(False)
    plt.gca().spines['left'].set_visible(False)
    plt.gca().spines['bottom'].set_visible(False)
    plt.rcParams["font.size"] = 20
    plt.title( str(i))
    plt.imshow(image[i]) 
plt.savefig(imgname + '.jpg')


画像のファイル名も自動で並べる
from PIL import Image
import cv2
import numpy as np
import matplotlib.pyplot as plt


infile=[1,2,3,4,5,6,7,8,9,10,11]
image=[1,2,3,4,5,6,7,8,9,10,11]

filename="test"

for i in range(1, 11):  
  infile[i] = filename +  str(i) +".jpg"

imgname="result-auto-10"
plt.figure(figsize=(20, 15))
plt.subplots_adjust(wspace=0.0, hspace=0.0)

for i in range(1, 11):  
    image[i] = cv2.imread(infile[i])
    image[i] = cv2.cvtColor(image[i], cv2.COLOR_BGR2RGB)
    plt.subplot(2,5,i)
    plt.subplots_adjust(hspace=0.0)
    plt.tick_params(labelbottom="off")
    plt.tick_params(labelleft="off")
    plt.tick_params(bottom="off")
    plt.tick_params(left="off")
    plt.gca().spines['right'].set_visible(False)
    plt.gca().spines['top'].set_visible(False)
    plt.gca().spines['left'].set_visible(False)
    plt.gca().spines['bottom'].set_visible(False)
    plt.rcParams["font.size"] = 20
    plt.title( str(i))
    plt.imshow(image[i]) 
plt.savefig(imgname + '.jpg')

pythonを学ぶのにおすすめな書籍も紹介しています。

【資格取得におすすめ】機械学習・AI・ディープラーニングについて理解できる本ランキング 今回は機械学習・AI・ディープラーニングについて理解できる本を紹介します。 日本ディープラーニング協会が主催するG検定の資格取得での勉...
ABOUT ME
Mickey@コーヒー好きエンジニア
【コーヒー×科学×AI×ものづくり】趣味は①家庭用ロースターで自家焙煎コーヒー作り②アプリ開発です。 Wordpressブログ、note、Instagramやっています♪ ブログでは自家焙煎の実例や実践的なプログラミングの例文紹介、noteではコーヒーの海外論文(主に焙煎理論)やAIに関する情報の発信をしています。