皆さんは画像やグラフを連続で並べたい時どうしていますか。
数が少なければ一つ一つ並ベれば良いですが、間隔を揃えたりしていると意外に時間がかかるものです。
本記事ではプログラミング初心者向けにPythonを使って複数の画像を読み込み、並べて表示するサンプル例を紹介します。
エクセルやそれ以外のソフトでも並べる事ができますが、
Pythonはコードの中身がシンプルで初心者でも1日あれば
見よう見まねで形になるのかなと感じています。
2つの例を紹介します。
①画像のファイル名を一つ一つ入力する必要があるもの
⇒不規則で色々なファイル名のものを並べたい時に使えます
②画像のファイル名も自動的に認識してくれるもの
⇒連番など規則があるファイル名のものを並べたい時に使えます
★下記で紹介する.pyのファイルと同じフォルダ内に10枚の画像を用意して整列した例を紹介します
画像の大きさを自動で揃えたい場合はトリミングすることができます。
トリミングについてはこちらの記事を参考にして下さい。
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
#下2文は中身は一緒になる
infile=[num for num in range(1,12,1)]
image=list(range(1,12))
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を学ぶのにおすすめな書籍も紹介しています。