\

OpenCVとPythonを使用してGUIを作成する方法について説明します。この記事では、TkinterとPySimpleGUIの2つの異なるライブラリを使用して、OpenCVの画像を表示するGUIを作成します。

Tkinterを使用した方法

TkinterはPythonの標準ライブラリで、GUIを作成するために使用されます。以下に、Tkinterを使用してウィンドウを作成し、その中のCanvasにOpenCVの画像を表示させる方法を示します。

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)
image_pil = Image.fromarray(image_rgb)
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()

PySimpleGUIを使用した方法

PySimpleGUIは、PythonでGUIを簡単に作成するためのライブラリです。以下に、PySimpleGUIを使用してOpenCVの画像を表示する方法を示します。

import cv2
import numpy as np
import PySimpleGUI as sg

sg.theme('LightBlue')
layout = [
    [sg.Text('Realtime movie', size=(40, 1), justification='center', font='Helvetica 20',key='-status-')],
    [sg.Text('Camera number: ', size=(8, 1)), sg.InputText(default_text='0', size=(4, 1),key='-camera_num-')],
    [sg.Image(filename='', key='image')],
    [sg.Button('Start', size=(10, 1), font='Helvetica 14',key ='-start-'), sg.Button('Stop', size=(10, 1), font='Helvetica 14',key = '-stop-'), sg.Button('Exit', size=(10, 1), font='Helvetica 14', key='-exit-'), ]
]
window = sg.Window('Realtime movie',layout, location=(100, 100))
recording = False
while True:
    event, values = window.read(timeout=20)
    if event in (None, '-exit-'):
        break
    elif event == '-start-':
        window['-status-'].update('Live')
        camera_number = int(values['-camera_num-'])
        cap = cv2.VideoCapture(camera_number, cv2.CAP_DSHOW)
        recording = True
    elif event == '-stop-':
        window['-status-'].update("Stop")
        recording = False
    if recording:
        ret, frame = cap.read()
        if ret is True:
            imgbytes = cv2.imencode('.png', frame)[1].tobytes()
            window['image'].update(data=imgbytes)
window.close()

これらのコードは、OpenCVで取得した画像をGUIで表示する基本的な方法を示しています。これらのコードを基に、自分のニーズに合わせてカスタマイズすることができます。例えば、ボタンを追加して画像処理のパラメータを調整したり、スライダーを使用して画像の明るさを調整したりすることができます。.

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です