pythonメニュー

Pythonで扱いイメージ

matplotlib、PIL(python Image library)、OpenCVなどあります

PIL(python Image library)

from PIL import Image

img = Image.open('graph1.png') # 元となる画像の読み込み

img.show() # 各OSの標準ビューアが開く。
input('任意入力 縮小画像>> ') # キー入力(Enterで進む)

#resize_img = img.resize((16*50, 9*50)) # ワイドリサイズ。サイズは幅と高さをtupleで指定
resize_img = img.resize((16*50, 10*50)) # WXGA比率リサイズ。サイズは幅と高さをtupleで指定
resize_img.show() # 新しいビューアが開く。

exit()
上記のコメントに示すような動作でイメージを表示できます。 Windowsにいおいて、プログラムが終了してもビューアが開いたままで、 マニュアル操作で、ビューアを閉じる必要がありました。
なお、Image.showを行った画像の更新は行えません。つまり、新しいビューアが開く挙動です。
(公式ドキュメント(英語)のImage.show説明によるとデバック目的とのことです。)
表示したビューアを別画像に変更する処理を行いたい場合、後述するOpenCVを使えば可能です。
(tkinter(ティーケーインター)を使う方法もあります)

PILでは、次のように複数の画像の合成など得意とします。

from PIL import Image

imgBack = Image.open('res/image501.jpg') # 背景画像の読み込み

width, height = imgBack.size #オリジナル画像の幅と高さを取得

imgCanvas = Image.new('RGB', (width, height)) # オリジナル画像と同じサイズのImageオブジェクトを作成する
# imgCanvas = Image.new('RGBA', (width, height)) # オリジナル画像と同じサイズのImageオブジェクトを作成する

img_eyeWhite = Image.open('res/eyeWhite.gif', 'r')# 画像を読み込み
img_eyeball = Image.open('res/eyeball.png', 'r')
img_eyelid = Image.open('res/eyelid.png', 'r')
img_neck = Image.open('res/neck.png', 'r')
img_Face = Image.open('res/Face.png', 'r')
img_mouth = Image.open('res/mouth.png', 'r')

fx,fy= 0, 0
imgCanvas.paste(imgBack, (fx,fy))
imgCanvas.paste(img_eyeWhite, (fx+50,fy+100)) 
imgCanvas.paste(img_eyeball, (0, 0),img_eyeball)# 以降は、第3引数で、透過ありの描画 
imgCanvas.paste(img_eyelid, (0, 0),img_eyelid)
imgCanvas.paste(img_neck, (0, 0),img_neck)
imgCanvas.paste(img_Face, (0, 0),img_Face)
imgCanvas.paste(img_mouth, (0, 0),img_mouth)

imgCanvas.show() # 各OSの標準ビューアが開く。

from PIL import Image, ImageDraw, ImageFont
draw = ImageDraw.Draw(imgCanvas) # 描画ツール('PIL.ImageDraw.ImageDraw'クラス)の取得
type(draw)
font = ImageFont.truetype('/Library/Fonts/ipaexp.ttf', 15) # フォントの種類とサイズを指定
draw.text((10, 10), 'Hello World') #,font=font, fill='#000') # 文字列描画

draw.line([(10,10),(100,100)], fill=128,width=5)

imgCanvas.show() # 各OSの標準ビューアが開く。

imgCanvas.show.save('temp.jpg', 'JPEG', quality=100, optimize=True) # ファイルに保存

del draw

上記で示したよに、様々な.png .jpg .gif と様々なフォーマットに対する保存と読み込みが可能なモジュールです。
よって、他のモージュール(例えば、opencv や matplotlib で作ったイメージでも、ファイル作成にはPILが使われるケースがあります。)

OpenCV

画像処理用のモージュールですが、カメラ撮影も可能です。.png や .jpgの読み込み、保存も可能
(なお.gif関連はPILで行うことにしている)

2つの画像を1秒ごとで交互に6回切り替えを行うプログラムです。

pip install opencv-python でモジュール追加が必要です。
import cv2
img1 = cv2.imread("graph1.png")
img2 = cv2.imread("graph2_original.png")
img=img1
for n in range(6): # Enterを入力すると、表示画像を変更する
    cv2.imshow("Loaded image",img) # "Loaded image"の名前のビューアを表示または、更新
    cv2.waitKey(1000) # 表示して1秒間待つ(任意キーを押すと、その時点でリターン)
    #keycode = cv2.waitKey(0) # 引数0でキーが押されるまで待ちます。(戻り値はintのキーコード)
    if img is img1 :# imgの参照情報を交互に変更
        img=img2
    else:
        img=img1

cv2.destroyAllWindows() # 作られた全てのウィンドウを閉じる(無くてもプログラム終了で閉じる)