プログラム

Pillow(PIL)

【Python】画像ビューア(ズーム(拡大/縮小)、移動表示)

Canvasに画像を表示する のページではtkinterでGUIを作り画像ビューアを作りましたが、これに アフィン変換 を追加し、画像の拡大/縮小、移動の出来る画像ビューアを作成しました。 機能は、Fileメニューから画像ファイルを開き、マ...
Pillow(PIL)

【Python/Pillow(PIL)】カラーパレットの設定(インデックスカラー)

PythonのPillowでモノクロ画像ファイルを開くと、Imageクラスの mode は "L" となりますが、これはカラーパレットを持たない画像データとなります。 C言語やC#ではモノクロ画像データを表示するときは、カラーパレットを参照...
tkinter

【Python/tkinter】Scale(トラックバー、スライダー)

つまみを動かして値を調整できる、C#でいうところのトラックバーは、tkiterでは Scale といいます。 以下にサンプルプログラムを示します。 import tkinter as tk class Application(tk.Fram...
Pillow(PIL)

【Python/Pillow(PIL)】画像データフォーマット(mode)

画像データにはカラー画像の24bit,32bit、モノクロ画像の8bit,16bitなどがありますが、Pillowで対応している画像データフォーマット(mode)の一覧は以下の通りです。 mode 説明 1 1-bit pixels, bl...
Pillow(PIL)

【Python/Pillow(PIL)】画像のヒストグラム取得、表示

Pillowで画像のヒストグラムを取得し、取得した画像データをmatplotlibで表示するには、とても簡単で以下のようにします。 import matplotlib.pyplot as plt # ヒストグラム表示用 from PIL i...
Python

【Python/PyLint】Visual Studioでエラー、警告の確認

Pythonでは、基本的にビルドしないので、実行するまでエラーが分からないのですが、Visual StudioのPythonプロジェクトからPyLintというエラーチェックツールが使えるようになっており、エラー、警告を確認することができます...
Pillow(PIL)

【Python/Pillow(PIL)】対応画像ファイルフォーマット

Pillowで画像ファイルを開くときはopen()関数、保存はsave()関数を使って from PIL import Image # PIL.Imageで画像を開く img = Image.open("./Mandrill.bmp") #...
Pillow(PIL)

【Python/Pillow(PIL)】transformメソッドで射影変換(ホモグラフィ変換)

transform()メソッドでアフィン変換を行う方法はここ↓で紹介しました。 このページでも説明しているように method に PIL.Image.PERSPECTIVE を指定し、data の部分にホモグラフィ変換行列を指定すれば、射...
Pillow(PIL)

【Python/Pillow(PIL)】transformメソッドでアフィン変換

「Python アフィン変換」と検索すると、OpenCVを使った説明が多いような気がしますが、画像を表示するだけなら、Pillowにtransform()メソッドというのがあり、これもなかなか高機能な処理が可能になります。 Pillowなら...
NumPy

【Python/NumPy】座標からホモグラフィ変換行列を求める方法

アフィン変換では長方形を平行四辺形には変換できるものの、台形には変換できないと説明しましたが、任意四角形から任意四角形へ変換できるのがホモグラフィ変換となります。 実際には書類や名刺のような長方形の被写体を斜めから撮影した時に、上から撮影し...
NumPy

【Python/NumPy】座標からアフィン変換行列を求める方法

アフィン変換行列は、これまで移動量、スケール、回転角度からアフィン変換行列を求める方法を紹介してきました。 ただ、実際にはアフィン変換前の点とアフィン変換後の点の組み合わせからアフィン変換行列を求めたい場合もあるので、今回はその方法を紹介し...
tkinter

【Python/tkinter】Canvasに画像を表示する

まず、Canvasを作成し、画像ファイルを開き、Canvasに画像を表示するサンプルは以下のようになります。 import tkinter as tk from PIL import ImageTk class Application(tk...
Python

Visual StudioのPython環境の切り替え変更

Pythonはインストールした環境ごとに使用できるバージョンやモジュール(パッケージ)を切り替えることができます。 Visual Studioでは、AnacondaやPythonのインストーラなどでインストールした環境の一覧が表示されていま...
tkinter

【Python/tkinter】PanedWindow(C#のSplitContainer相当)

C#では、SplitContainerを使ってPictureBoxのサイズなどを変更していたのですが、tkinterでは、このSplitContainerに相当するものがPanedWindowとなります。 PanedWindowのサンプルプ...
tkinter

【Python/tkinter】Canvas(キャンバス)の作成

Canvasは、線や円などの図形や画像を表示するためのベースとなるものとなります。 C#でいうところのPictureBoxです。 Canvasには、図形や画像を表示する以外にも描画領域をスクロールできる機能もありますが、今回はCanvasの...
NumPy

【Python/NumPy】行列の演算(積、逆行列、転置行列、擬似逆行列など)

個人的には、行列は最小二乗法で近似式を求めるときや、アフィン変換を用いて画像の表示やリサイズを行う際に用いるのですが、この行列の演算は、PythonではNumPyを用いて行います。 NumPyのインポート import numpy as n...