Tkinter로 만든 창에 OpenCV-Python 이미지를 표시합니다.

OpenCV에서 취급하는 이미지는 cv2.imshow() 로 표시하는 것이 가장 간단합니다만, 버튼등의 GUI 부품을 함께 표시시킬 수 없습니다.
GUI 부품을 함께 표시하려면 Qt 또는 Tinker 창을 사용해야 합니다.
이 섹션에서는 Tkinter에서 창을 만들고 그 안의 Canvas가 OpenCV 이미지를 표시하는 방법을 보여줍니다.

환경
- 파이썬 3.7.0
- opencv-python 3.4.3.18
- Pillow 5.2.0

※ 소스 코드와 같은 장소에 lenna.jpg 가 놓여 있는 것으로 합니다.
import tkinter
import cv2
from PIL import Image, ImageTk

root = tkinter.Tk()
root.title("Show Image from OpenCV in Tkinter canvas")

image_bgr = cv2.imread("lenna.jpg")
image_rgb = cv2.cvtColor(image_bgr, cv2.COLOR_BGR2RGB) # imreadはBGRなのでRGBに変換
image_pil = Image.fromarray(image_rgb) # RGBからPILフォーマットへ変換
image_tk  = ImageTk.PhotoImage(image_pil) # ImageTkフォーマットへ変換

canvas = tkinter.Canvas(root, width=image_bgr.shape[0], height=image_bgr.shape[1]) # Canvas作成
canvas.pack()
canvas.create_image(0, 0, image=image_tk, anchor='nw') # ImageTk 画像配置

root.mainloop()

결과

좋은 웹페이지 즐겨찾기