From 3b7b282b8f65d2bd55e4e31e17938559b0259fc1 Mon Sep 17 00:00:00 2001 From: mhby1g21 <mhby1g21@soton.ac.uk> Date: Wed, 13 Nov 2024 17:07:55 +0000 Subject: [PATCH] renamed old GUI to old_GUI.py and created new GUI.py --- scripts/GUI.py | 196 --------------------------------------------- scripts/old_GUI.py | 196 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 196 insertions(+), 196 deletions(-) create mode 100644 scripts/old_GUI.py diff --git a/scripts/GUI.py b/scripts/GUI.py index bf8aecd..e69de29 100644 --- a/scripts/GUI.py +++ b/scripts/GUI.py @@ -1,196 +0,0 @@ -import tkinter as tk -import tkinter.filedialog -import subprocess -import sys -import time -from threading import Thread -import shutil -import os - -# Get the directory of the current script -SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) -# Get the root directory (AVVR-Pipeline-Internship) -ROOT_DIR = os.path.dirname(SCRIPT_DIR) - -file_path = None -createDepth = "0" - -def shift_image_selection(): - # This function can be used if you want to perform any action when the checkbox is clicked - pass - -def copy_intermediary_outputs(): - source_folder = os.path.join(ROOT_DIR, "edgenet-360", "Data", "Input") - destination_folder = os.path.join(ROOT_DIR, "edgenet-360", "Output") - files_to_copy = ["depth_e.png", "enhanced_depth_e.png", "material.png", "rgb.png"] - - for file_name in files_to_copy: - source_path = os.path.join(source_folder, file_name) - destination_path = os.path.join(destination_folder, file_name) - try: - shutil.copy(source_path, destination_path) - print(f"Copied {file_name} to {destination_folder}") - except FileNotFoundError: - print(f"Warning: {file_name} not found in {source_folder}") - -def select_Image(event): - global file_path - file_path = tkinter.filedialog.askopenfilename() - file_path = os.path.normpath(file_path) - select_button.configure(text="Selected", bg="red") - label.configure(text="Image is selected. Press run to create scene.") - -def depthmap_creation(): - print("Manually upload depth map: ", uploadDepthCheck.get()) - - if uploadDepthCheck.get() == 1: # if manually upload checked - check.set(0) # disable auto generation of depth map - upload_depth_path = tkinter.filedialog.askopenfilename(title="Select a depth map", filetypes=[("PNG files", "*.png")]) #dialog box to upload depth map - - if upload_depth_path: - print(f"Uploaded depth map: {upload_depth_path}") - #TODO implement Mona's monodepth upload - else: - print("No depth map selected") - check.set(1) # if no depth map selected, enable auto generation of depth map - depth_check.deselect() # uncheck the depth map check box - else: - check.set(1) # if manually upload unchecked, enable auto generation of depth map - upload_depth_path = None - print("Removed uploaded depth map") - -def stanfordRoom_selection(): - if checkStanford.get() == 1: - global stanford_frame - stanford_frame = tk.Frame(window) - stanford_frame.pack(fill=tk.X, padx=5, pady=5) - global labelRoomArea - labelRoomArea = tk.Label(stanford_frame, text="Please Input Room Area: ") - labelRoomArea.pack(side="left") - global stanford_text - stanford_text = tk.Entry(stanford_frame) - stanford_text.pack(side="left", fill=tk.X, expand=True) - else: - stanford_frame.pack_forget() - - select_button.pack(side="top", fill=tk.X, expand=True, padx=5, pady=5) - run_button.pack(side="top", fill=tk.X, expand=True, padx=5, pady=5) - -def run_Image(event): - if checkStanford.get() == 0: - label.configure(text="Pipeline is running. Creating scene...", height=15) - else: - label.configure(text="Pipeline is running for Stanford2D3D dataset. Creating scene...", height=15) - labelRoomArea.configure(text="Room Area Running : ") - stanford_text.configure(state="disabled") - - select_button.pack_forget() - run_button.pack_forget() - depth_check.pack_forget() - include_top_check.pack_forget() - stanford_check.pack_forget() - shift_image_check.pack_forget() - threading() - -def runProcess(): - global file_path - include_top_option = "y" if include_top.get() == 1 else "" - shift_image_option = "y" if shift_image.get() == 1 else "" - - try: - if checkStanford.get() == 0: - combined_bat = os.path.join(SCRIPT_DIR, "combined.bat") - print(f"Attempting to run: {combined_bat}") - print(f"With arguments: {file_path}, {str(check.get())}, {include_top_option}, {shift_image_option}") - - # depth map check - if check.get() == 1: - print("Auto depth map") - else: - print("Manual depth map") - - p = subprocess.Popen( - [combined_bat, file_path, str(check.get()), include_top_option, shift_image_option], - stdout=sys.stdout) - p.communicate() - - else: - temp = os.path.split(file_path) - suffices = temp[-1].split("_") - camera_pos = str(suffices[1]) - room_name = suffices[2] + "_" + suffices[3] - room_area = stanford_text.get() - - print(room_area, room_name, camera_pos) - combined_stanford_bat = os.path.join(SCRIPT_DIR, "combined_stanford.bat") - p = subprocess.Popen( - [combined_stanford_bat, file_path, camera_pos, str(room_area), room_name], - stdout=sys.stdout) - p.communicate() - - copy_intermediary_outputs() - label.configure(text="Pipeline execution complete, check output folder.") - - except Exception as e: - print(f"An error occurred: {e}") - label.configure(text=f"An error occurred: {e}") - - try: - labelRoomArea.pack_forget() - stanford_text.pack_forget() - except Exception as e: - print(e) - -def threading(): - thread1 = Thread(target=runProcess) - thread1.start() - -window = tk.Tk() -window.title("Immersive VR scene creator") - -check = tk.IntVar() -check.set(1) #automatically generate depth map as default -uploadDepthCheck = tk.IntVar() # added uploadDepthCheck vaiable: 0 = automatically upload depth map, 1 = manually upload depth map - -checkStanford = tk.IntVar() -include_top = tk.IntVar() -shift_image = tk.IntVar() -label = tk.Label( - text="Please Input a RGB image for scene creation", - foreground="black", - background="white", - width=50, - height=10, -) - -select_button = tk.Button( - text="Select", - width=50, - height=5, - bg="green", - fg="white", -) - -run_button = tk.Button( - text="Run", - width=50, - height=5, - bg="green", - fg="white", -) -depth_check = tk.Checkbutton(window, text='Upload a depth map(360 MonoDepth)',variable=uploadDepthCheck, onvalue=1, offvalue=0, command=depthmap_creation) -stanford_check = tk.Checkbutton(window, text='Run for stanford2D3D dataset',variable=checkStanford, onvalue=1, offvalue=0,command=stanfordRoom_selection ) -include_top_check = tk.Checkbutton(window, text='Include Top in Mesh', variable=include_top, onvalue=1, offvalue=0) -shift_image_check = tk.Checkbutton(window, text='Shift input image', variable=shift_image, onvalue=1, offvalue=0, command=shift_image_selection) -label.pack() -depth_check.pack() -stanford_check.pack() -include_top_check.pack() -shift_image_check.pack() -select_button.pack() -run_button.pack() - -select_button.bind('<Button-1>', select_Image) -run_button.bind('<Button-1>', run_Image) - -window.mainloop() \ No newline at end of file diff --git a/scripts/old_GUI.py b/scripts/old_GUI.py new file mode 100644 index 0000000..bf8aecd --- /dev/null +++ b/scripts/old_GUI.py @@ -0,0 +1,196 @@ +import tkinter as tk +import tkinter.filedialog +import subprocess +import sys +import time +from threading import Thread +import shutil +import os + +# Get the directory of the current script +SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) +# Get the root directory (AVVR-Pipeline-Internship) +ROOT_DIR = os.path.dirname(SCRIPT_DIR) + +file_path = None +createDepth = "0" + +def shift_image_selection(): + # This function can be used if you want to perform any action when the checkbox is clicked + pass + +def copy_intermediary_outputs(): + source_folder = os.path.join(ROOT_DIR, "edgenet-360", "Data", "Input") + destination_folder = os.path.join(ROOT_DIR, "edgenet-360", "Output") + files_to_copy = ["depth_e.png", "enhanced_depth_e.png", "material.png", "rgb.png"] + + for file_name in files_to_copy: + source_path = os.path.join(source_folder, file_name) + destination_path = os.path.join(destination_folder, file_name) + try: + shutil.copy(source_path, destination_path) + print(f"Copied {file_name} to {destination_folder}") + except FileNotFoundError: + print(f"Warning: {file_name} not found in {source_folder}") + +def select_Image(event): + global file_path + file_path = tkinter.filedialog.askopenfilename() + file_path = os.path.normpath(file_path) + select_button.configure(text="Selected", bg="red") + label.configure(text="Image is selected. Press run to create scene.") + +def depthmap_creation(): + print("Manually upload depth map: ", uploadDepthCheck.get()) + + if uploadDepthCheck.get() == 1: # if manually upload checked + check.set(0) # disable auto generation of depth map + upload_depth_path = tkinter.filedialog.askopenfilename(title="Select a depth map", filetypes=[("PNG files", "*.png")]) #dialog box to upload depth map + + if upload_depth_path: + print(f"Uploaded depth map: {upload_depth_path}") + #TODO implement Mona's monodepth upload + else: + print("No depth map selected") + check.set(1) # if no depth map selected, enable auto generation of depth map + depth_check.deselect() # uncheck the depth map check box + else: + check.set(1) # if manually upload unchecked, enable auto generation of depth map + upload_depth_path = None + print("Removed uploaded depth map") + +def stanfordRoom_selection(): + if checkStanford.get() == 1: + global stanford_frame + stanford_frame = tk.Frame(window) + stanford_frame.pack(fill=tk.X, padx=5, pady=5) + global labelRoomArea + labelRoomArea = tk.Label(stanford_frame, text="Please Input Room Area: ") + labelRoomArea.pack(side="left") + global stanford_text + stanford_text = tk.Entry(stanford_frame) + stanford_text.pack(side="left", fill=tk.X, expand=True) + else: + stanford_frame.pack_forget() + + select_button.pack(side="top", fill=tk.X, expand=True, padx=5, pady=5) + run_button.pack(side="top", fill=tk.X, expand=True, padx=5, pady=5) + +def run_Image(event): + if checkStanford.get() == 0: + label.configure(text="Pipeline is running. Creating scene...", height=15) + else: + label.configure(text="Pipeline is running for Stanford2D3D dataset. Creating scene...", height=15) + labelRoomArea.configure(text="Room Area Running : ") + stanford_text.configure(state="disabled") + + select_button.pack_forget() + run_button.pack_forget() + depth_check.pack_forget() + include_top_check.pack_forget() + stanford_check.pack_forget() + shift_image_check.pack_forget() + threading() + +def runProcess(): + global file_path + include_top_option = "y" if include_top.get() == 1 else "" + shift_image_option = "y" if shift_image.get() == 1 else "" + + try: + if checkStanford.get() == 0: + combined_bat = os.path.join(SCRIPT_DIR, "combined.bat") + print(f"Attempting to run: {combined_bat}") + print(f"With arguments: {file_path}, {str(check.get())}, {include_top_option}, {shift_image_option}") + + # depth map check + if check.get() == 1: + print("Auto depth map") + else: + print("Manual depth map") + + p = subprocess.Popen( + [combined_bat, file_path, str(check.get()), include_top_option, shift_image_option], + stdout=sys.stdout) + p.communicate() + + else: + temp = os.path.split(file_path) + suffices = temp[-1].split("_") + camera_pos = str(suffices[1]) + room_name = suffices[2] + "_" + suffices[3] + room_area = stanford_text.get() + + print(room_area, room_name, camera_pos) + combined_stanford_bat = os.path.join(SCRIPT_DIR, "combined_stanford.bat") + p = subprocess.Popen( + [combined_stanford_bat, file_path, camera_pos, str(room_area), room_name], + stdout=sys.stdout) + p.communicate() + + copy_intermediary_outputs() + label.configure(text="Pipeline execution complete, check output folder.") + + except Exception as e: + print(f"An error occurred: {e}") + label.configure(text=f"An error occurred: {e}") + + try: + labelRoomArea.pack_forget() + stanford_text.pack_forget() + except Exception as e: + print(e) + +def threading(): + thread1 = Thread(target=runProcess) + thread1.start() + +window = tk.Tk() +window.title("Immersive VR scene creator") + +check = tk.IntVar() +check.set(1) #automatically generate depth map as default +uploadDepthCheck = tk.IntVar() # added uploadDepthCheck vaiable: 0 = automatically upload depth map, 1 = manually upload depth map + +checkStanford = tk.IntVar() +include_top = tk.IntVar() +shift_image = tk.IntVar() +label = tk.Label( + text="Please Input a RGB image for scene creation", + foreground="black", + background="white", + width=50, + height=10, +) + +select_button = tk.Button( + text="Select", + width=50, + height=5, + bg="green", + fg="white", +) + +run_button = tk.Button( + text="Run", + width=50, + height=5, + bg="green", + fg="white", +) +depth_check = tk.Checkbutton(window, text='Upload a depth map(360 MonoDepth)',variable=uploadDepthCheck, onvalue=1, offvalue=0, command=depthmap_creation) +stanford_check = tk.Checkbutton(window, text='Run for stanford2D3D dataset',variable=checkStanford, onvalue=1, offvalue=0,command=stanfordRoom_selection ) +include_top_check = tk.Checkbutton(window, text='Include Top in Mesh', variable=include_top, onvalue=1, offvalue=0) +shift_image_check = tk.Checkbutton(window, text='Shift input image', variable=shift_image, onvalue=1, offvalue=0, command=shift_image_selection) +label.pack() +depth_check.pack() +stanford_check.pack() +include_top_check.pack() +shift_image_check.pack() +select_button.pack() +run_button.pack() + +select_button.bind('<Button-1>', select_Image) +run_button.bind('<Button-1>', run_Image) + +window.mainloop() \ No newline at end of file -- GitLab