pysimplegui Canvas opencv 打开bmp格式
时间: 2023-05-25 22:05:36 浏览: 184
Opencv打开bmp图片
4星 · 用户满意度95%
下面是一个使用PySimpleGUI和OpenCV打开并显示BMP图像的例子:
``` python
import cv2
import PySimpleGUI as sg
filename = sg.popup_get_file('Select BMP File', file_types=(("BMP Files", "*.bmp"),))
if filename is not None:
img = cv2.imread(filename)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
layout = [[sg.Canvas(size=(img.shape[1], img.shape[0]), key='-CANVAS-')]]
window = sg.Window('BMP Viewer', layout, finalize=True)
canvas = window['-CANVAS-'].TKCanvas
photo = sg.ImageData(img.tobytes(), size=(img.shape[1], img.shape[0]), pad=(0, 0)).base64
img_widget = sg.Photo(
data=photo,
key="image",
enable_events=True,
size=(img.shape[1], img.shape[0]),
pad=(0, 0)
)
img_widget.Widget.pack(side="top", fill="both", expand=True)
canvas.create_window(0, 0, anchor="nw", window=img_widget.Widget)
while True:
event, values = window.read()
if event == sg.WINDOW_CLOSED:
break
window.close()
```
首先,使用弹出窗口选择BMP文件。然后,使用OpenCV将图像读取为NumPy数组,并将颜色通道从BGR格式转换为RGB格式。
接下来,在这个示例中,我们创建一个PySimpleGUI窗口,并使用该窗口创建一个PySimpleGUI画布。然后,我们使用OpenCV读取的图像数组创建一个PySimpleGUI图像,并编码为Base64格式。我们将图像添加到画布,使其充满窗口。最后,我们开始主事件循环,直到用户关闭窗口。
阅读全文