Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import dearpygui.dearpygui as dpg
- import cv2 as cv
- import numpy as np
- def flat_img(mat):
- return np.true_divide(np.asfarray(np.ravel(np.flip(mat,2)), dtype='f'), 255.0)
- #full size image
- _img = cv.imread('./test.jpg')
- _imgdata = flat_img(_img)
- #window scaled image
- img = _img.copy()
- imgdata = _imgdata.copy()
- win_dimensions = [800,500]
- tag_n = 0
- #updating a texture with new dimension
- def resize_window_img(tag, dimensions, _img, flat):
- img_dim = np.flip(_img.shape[:-1])
- scale = 1
- if (dimensions[0] >= dimensions[1]):
- scale = dimensions[0]/img_dim[0]
- else: scale = dimensions[1]/img_dim[1]
- img_dim[0]*=scale
- img_dim[1]*=scale
- global img
- global imgdata
- img = cv.resize(_img, img_dim)
- imgdata = flat_img(img)
- # delete window, add new texture+tag to registry, re-add window
- dpg.delete_item(tag)
- with dpg.texture_registry(show=False):
- global tag_n
- tag_n +=1
- tex_tag = "texture_tag"+str(tag_n)
- dpg.add_raw_texture(img.shape[1], img.shape[0], imgdata, tag=tex_tag, format=dpg.mvFormat_Float_rgb)
- with dpg.window(tag="imgwindow"):
- dpg.add_image(tex_tag)
- dpg.set_primary_window("imgwindow", True)
- def handle_float(sender, data):
- dpg.set_value("texture_tag"+str(tag_n), np.multiply(imgdata, data))
- def afteredit_cb(sender, data):
- f = dpg.get_value(data)
- # print(f"{f}, {data}")
- def viewport_resize_cb(sender, data):
- win_dimensions[0] = data[2:][0]
- win_dimensions[1] = data[2:][1]
- def resize_button_cb(sender, data):
- resize_window_img("imgwindow", win_dimensions, _img, _imgdata)
- dpg.create_context()
- dpg.create_viewport(title='img gui', width=win_dimensions[0], height=win_dimensions[1])
- with dpg.item_handler_registry(tag="float handler") as handler:
- dpg.add_item_deactivated_after_edit_handler(callback=afteredit_cb)
- with dpg.texture_registry(show=False):
- dpg.add_raw_texture(img.shape[1], img.shape[0], imgdata, tag="texture_tag"+str(tag_n), format=dpg.mvFormat_Float_rgb)
- with dpg.window(tag="ctlnwindow", label="img", no_close=True):
- dpg.add_slider_float(label="float", tag="fbar", default_value=0., max_value=1, callback=handle_float)
- dpg.add_button(label="fit image to window", tag="resizebutton", callback=resize_button_cb)
- with dpg.window(tag="imgwindow"):
- dpg.add_image("texture_tag"+str(tag_n))
- dpg.set_primary_window("imgwindow", True)
- dpg.setup_dearpygui()
- dpg.show_viewport()
- dpg.bind_item_handler_registry("fbar", "float handler")
- dpg.set_viewport_resize_callback(viewport_resize_cb)
- dpg.start_dearpygui()
- dpg.destroy_context()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement