OpenCVで画像を読み込み、Tkinterウィンドウに表示する方法
OpenCVはPython向けのオープンソース・コンピュータビジョンライブラリで、人工知能(AI)や機械学習の研究分野で広く利用されています。OpenCVのようなコンピュータビジョンライブラリは主に画像処理を担当しており、画像の読み込みから加工まで幅広い操作を行うことができます。
ここでは、「画像ファイルを読み込み、その画像をTkinterのウィンドウ上に表示するアプリケーション」を作成する手順を紹介します。
事前準備:OpenCVのインストール
まず、以下のコマンドを実行してOpenCVをインストールしてください。
pip install opencv-python
あわせて、Pillowもインストールしておくと便利です。
pip install pillow
実装の手順
- 環境にOpenCVをインストールし、import cv2 でライブラリをインポートします。
- 画像計算のために NumPy と PIL(Pillowパッケージ)もインポートします。
- imread(画像のパス) 関数を使って画像を読み込みます。
- split(image) 関数で画像のRGB各チャンネルに分解します。
- merge(rgb) 関数で色チャンネルを再結合し、BGRからRGBへ並べ替えます。
- 多次元配列(NumPy行列)をPILの画像オブジェクトに変換します。
- PhotoImage(image=ファイル) 関数でTkinter用の画像形式に変換します。
- Labelウィジェットを作成して画像を画面に表示します。
サンプルコード
# tkinterライブラリをインポート
from tkinter import *
import numpy as np
import cv2
from PIL import Image, ImageTk
# tkinterフレームのインスタンスを作成
win = Tk()
win.geometry("700x550")
# 画像を読み込む
img = cv2.imread('tutorialspoint.png')
# 色の並びを整理(BGR → RGB)
blue, green, red = cv2.split(img)
img = cv2.merge((red, green, blue))
im = Image.fromarray(img)
imgtk = ImageTk.PhotoImage(image=im)
# 画像を表示するためのLabelを作成
Label(win, image=imgtk).pack()
win.mainloop()実行結果
上記のコードを実行すると、指定した画像が読み込まれ、Tkinterのウィンドウ内に表示されます。

注意点
画像ファイル「tutorialspoint.png」は、実行するプログラムと同じフォルダ(ディレクトリ)に配置してください。別の場所にある場合は、cv2.imread() の引数に正しい相対パスまたは絶対パスを指定する必要があります。
また、OpenCVは画像をBGR(青・緑・赤)の順で扱うのに対し、PILやTkinterはRGB(赤・緑・青)の順で扱うため、split() と merge() を使ってチャンネルの順序を入れ替えている点にも注目してください。この処理を省略すると、色が反転した不自然な画像が表示されてしまいます。
-
PythonとOpenCVで画像の輪郭を検出・描画する方法
画像解析を行う際には、Python向けのオープンソースライブラリ「OpenCV(Open Source Computer Vision Library)」が広く利用されています。OpenCVをインストールした後、プログラム内では「cv2」という名前でインポートして使用します。 本記事では、画像ファイルに含まれる輪郭(コンタ)を検出し、描画する方法を解説します。輪郭とは、画像内の物体の形状を把握するために重要な情報で、「同じ明るさ(輝度)を持つ領域の境界上にある点を結んだ線」として定義されます。OpenCVでは、輪郭の検出にfindContours関数、輪郭の描画にdrawContours関数を
-
【Python×OpenCV】画像の収縮(エロージョン)と膨張(ダイレーション)の基本を解説
本記事では、PythonのOpenCVモジュールを使って、エロージョン(収縮)やダイレーション(膨張)といったモルフォロジー演算(形態学的処理)を実行する方法を解説します。 OpenCVはコンピュータビジョン向けに設計されたオープンソースのライブラリで、もともとはIntelによって開発されました。BSDライセンスのもとで誰でも無料で利用できます。 OpenCVの機能を使うには、まずpipでインストールしておきましょう。 sudo pip3 install opencv-python エロージョン(収縮)とは?仕組みを解説 エロージョンは、前景オブジェクトの境界を削り取っていく処理です。画像内の