mirror of
https://github.com/Deepshift/DeepCreamPy.git
synced 2024-11-30 19:00:27 +00:00
integrate in one UI
This commit is contained in:
parent
7303c3d8ec
commit
f5a1b34066
103
decensor.py
103
decensor.py
@ -29,8 +29,8 @@ except ImportError as e:
|
|||||||
print("install Anaconda : https://www.anaconda.com/distribution/ \n")
|
print("install Anaconda : https://www.anaconda.com/distribution/ \n")
|
||||||
|
|
||||||
class Decensor(QtCore.QThread):
|
class Decensor(QtCore.QThread):
|
||||||
def __init__(self, text_edit = None, text_cursor = None, ui_mode = None):
|
def __init__(self, parentThread = None, text_edit = None, text_cursor = None, ui_mode = None):
|
||||||
super().__init__()
|
super().__init__(parentThread)
|
||||||
args = config.get_args()
|
args = config.get_args()
|
||||||
self.is_mosaic = args.is_mosaic
|
self.is_mosaic = args.is_mosaic
|
||||||
self.variations = args.variations
|
self.variations = args.variations
|
||||||
@ -41,20 +41,29 @@ class Decensor(QtCore.QThread):
|
|||||||
|
|
||||||
self.signals = None # Signals class will be given by progressWindow
|
self.signals = None # Signals class will be given by progressWindow
|
||||||
|
|
||||||
if ui_mode is not None:
|
self.model = None
|
||||||
self.ui_mode = ui_mode
|
self.warm_up = False
|
||||||
else:
|
|
||||||
self.ui_mode = args.ui_mode
|
# if ui_mode is not None:
|
||||||
|
# self.ui_mode = ui_mode
|
||||||
|
# else:
|
||||||
|
# self.ui_mode = args.ui_mode
|
||||||
|
#
|
||||||
|
# if self.ui_mode:
|
||||||
|
# self.text_edit = text_edit
|
||||||
|
# self.text_cursor = text_cursor
|
||||||
|
# self.ui_mode = True
|
||||||
|
|
||||||
if not os.path.exists(self.decensor_output_path):
|
if not os.path.exists(self.decensor_output_path):
|
||||||
os.makedirs(self.decensor_output_path)
|
os.makedirs(self.decensor_output_path)
|
||||||
|
|
||||||
if self.ui_mode:
|
|
||||||
self.text_edit = text_edit
|
|
||||||
self.text_cursor = text_cursor
|
|
||||||
self.ui_mode = True
|
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
|
if not self.warm_up :
|
||||||
|
print("if self.warm_up :")
|
||||||
|
self.load_model()
|
||||||
|
return
|
||||||
|
elif self.warm_up:
|
||||||
|
print("elif not self.warm_up:")
|
||||||
self.decensor_all_images_in_folder()
|
self.decensor_all_images_in_folder()
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
@ -69,15 +78,23 @@ class Decensor(QtCore.QThread):
|
|||||||
return mask
|
return mask
|
||||||
|
|
||||||
def load_model(self):
|
def load_model(self):
|
||||||
self.signals.update_progress_LABEL.emit("load_model()", "Loading neural network. This may take a while.")
|
self.signals.insertText_progressCursor.emit("Loading model ... please wait ...\n")
|
||||||
|
if self.model is None :
|
||||||
self.model = InpaintNN(bar_model_name = "./models/bar/Train_775000.meta",
|
self.model = InpaintNN(bar_model_name = "./models/bar/Train_775000.meta",
|
||||||
bar_checkpoint_name = "./models/bar/",
|
bar_checkpoint_name = "./models/bar/",
|
||||||
mosaic_model_name = "./models/mosaic/Train_290000.meta",
|
mosaic_model_name = "./models/mosaic/Train_290000.meta",
|
||||||
mosaic_checkpoint_name = "./models/mosaic/",
|
mosaic_checkpoint_name = "./models/mosaic/",
|
||||||
is_mosaic=self.is_mosaic)
|
is_mosaic=self.is_mosaic)
|
||||||
|
self.warm_up = True
|
||||||
|
print("load model finished")
|
||||||
|
self.signals.insertText_progressCursor.emit("Loading model finished!\n")
|
||||||
|
self.signals.update_decensorButton_Text.emit("Decensor Your Images")
|
||||||
|
self.signals.update_decensorButton_Enabled.emit(True)
|
||||||
|
|
||||||
def decensor_all_images_in_folder(self):
|
def decensor_all_images_in_folder(self):
|
||||||
#load model once at beginning and reuse same model
|
#load model once at beginning and reuse same model
|
||||||
|
if not self.warm_up :
|
||||||
|
# incase of running by source code
|
||||||
self.load_model()
|
self.load_model()
|
||||||
|
|
||||||
input_color_dir = self.decensor_input_path
|
input_color_dir = self.decensor_input_path
|
||||||
@ -87,24 +104,37 @@ class Decensor(QtCore.QThread):
|
|||||||
output_dir = self.decensor_output_path
|
output_dir = self.decensor_output_path
|
||||||
|
|
||||||
# Change False to True before release --> file.check_file(input_dir, output_dir, True)
|
# Change False to True before release --> file.check_file(input_dir, output_dir, True)
|
||||||
self.signals.update_progress_LABEL.emit("file.check_file()", "Checking image files and directory...")
|
# self.signals.update_progress_LABEL.emit("file.check_file()", "Checking image files and directory...")
|
||||||
|
self.signals.insertText_progressCursor.emit("Checking image files and directory...\n")
|
||||||
|
|
||||||
file_names, self.files_removed = file.check_file(input_dir, output_dir, False)
|
file_names, self.files_removed = file.check_file(input_dir, output_dir, False)
|
||||||
|
|
||||||
self.signals.total_ProgressBar_update_MAX_VALUE.emit("set total progress bar MaxValue : "+str(len(file_names)),len(file_names))
|
# self.signals.total_ProgressBar_update_MAX_VALUE.emit("set total progress bar MaxValue : "+str(len(file_names)),len(file_names))
|
||||||
|
'''
|
||||||
|
print("set total progress bar MaxValue : "+str(len(file_names)))
|
||||||
|
self.signals.update_ProgressBar_MAX_VALUE.emit(len(file_names))
|
||||||
|
'''
|
||||||
|
self.signals.insertText_progressCursor.emit("Decensoring {} image files\n".format(len(file_names)))
|
||||||
|
|
||||||
#convert all images into np arrays and put them in a list
|
#convert all images into np arrays and put them in a list
|
||||||
for n, file_name in enumerate(file_names, start = 1):
|
for n, file_name in enumerate(file_names, start = 1):
|
||||||
self.signals.total_ProgressBar_update_VALUE.emit("Decensoring {} / {}".format(n, len(file_names)), n)
|
# self.signals.total_ProgressBar_update_VALUE.emit("Decensoring {} / {}".format(n, len(file_names)), n)
|
||||||
|
'''
|
||||||
|
self.update_ProgressBar_SET_VALUE.emit(n)
|
||||||
|
print("Decensoring {} / {}".format(n, len(file_names)))
|
||||||
|
'''
|
||||||
|
self.signals.insertText_progressCursor.emit("Decensoring image file : {}\n".format(file_name))
|
||||||
|
|
||||||
# signal progress bar value == masks decensored on image ,
|
# signal progress bar value == masks decensored on image ,
|
||||||
# e.g) sample image : 17
|
# e.g) sample image : 17
|
||||||
self.signals.signal_ProgressBar_update_VALUE.emit("reset value", 0) # set to 0 for every image at start
|
# self.signals.signal_ProgressBar_update_VALUE.emit("reset value", 0) # set to 0 for every image at start
|
||||||
self.signals.update_progress_LABEL.emit("for-loop, \"for file_name in file_names:\"","Decensoring : "+str(file_name))
|
# self.signals.update_progress_LABEL.emit("for-loop, \"for file_name in file_names:\"","Decensoring : "+str(file_name))
|
||||||
|
|
||||||
color_file_path = os.path.join(input_color_dir, file_name)
|
color_file_path = os.path.join(input_color_dir, file_name)
|
||||||
color_basename, color_ext = os.path.splitext(file_name)
|
color_basename, color_ext = os.path.splitext(file_name)
|
||||||
if os.path.isfile(color_file_path) and color_ext.casefold() == ".png":
|
if os.path.isfile(color_file_path) and color_ext.casefold() == ".png":
|
||||||
print("--------------------------------------------------------------------------")
|
print("--------------------------------------------------------------------------")
|
||||||
print("Decensoring the image {}".format(color_file_path))
|
print("Decensoring the image {}\n".format(color_file_path))
|
||||||
try :
|
try :
|
||||||
colored_img = Image.open(color_file_path)
|
colored_img = Image.open(color_file_path)
|
||||||
except:
|
except:
|
||||||
@ -131,20 +161,25 @@ class Decensor(QtCore.QThread):
|
|||||||
else: #for...else, i.e if the loop finished without encountering break
|
else: #for...else, i.e if the loop finished without encountering break
|
||||||
print("Corresponding original, uncolored image not found in {}".format(color_file_path))
|
print("Corresponding original, uncolored image not found in {}".format(color_file_path))
|
||||||
print("Check if it exists and is in the PNG or JPG format.")
|
print("Check if it exists and is in the PNG or JPG format.")
|
||||||
|
self.signals.insertText_progressCursor.emit("Corresponding original, uncolored image not found in {}\n".format(color_file_path))
|
||||||
|
self.signals.insertText_progressCursor.emit("Check if it exists and is in the PNG or JPG format.\n")
|
||||||
#if we are doing a bar decensor
|
#if we are doing a bar decensor
|
||||||
else:
|
else:
|
||||||
self.decensor_image_variations(colored_img, colored_img, file_name)
|
self.decensor_image_variations(colored_img, colored_img, file_name)
|
||||||
else:
|
else:
|
||||||
print("--------------------------------------------------------------------------")
|
print("--------------------------------------------------------------------------")
|
||||||
print("Image can't be found: "+str(color_file_path))
|
print("Image can't be found: "+str(color_file_path))
|
||||||
|
self.signals.insertText_progressCursor.emit("Image can't be found: "+str(color_file_path) + "\n")
|
||||||
|
|
||||||
print("--------------------------------------------------------------------------")
|
print("--------------------------------------------------------------------------")
|
||||||
if self.files_removed is not None:
|
if self.files_removed is not None:
|
||||||
file.error_messages(None, self.files_removed)
|
file.error_messages(None, self.files_removed)
|
||||||
print("\nDecensoring complete!")
|
print("\nDecensoring complete!")
|
||||||
|
|
||||||
#unload model to prevent memory issues
|
#unload model to prevent memory issues
|
||||||
self.signals.update_progress_LABEL.emit("finished", "Decensoring complete! Close this window and reopen DCP to start a new session.")
|
# self.signals.update_progress_LABEL.emit("finished", "Decensoring complete! Close this window and reopen DCP to start a new session.")
|
||||||
|
self.signals.insertText_progressCursor.emit("\nDecensoring complete! remove decensored file before decensoring again not to overwrite")
|
||||||
|
self.signals.update_decensorButton_Enabled.emit(True)
|
||||||
tf.reset_default_graph()
|
tf.reset_default_graph()
|
||||||
|
|
||||||
def decensor_image_variations(self, ori, colored, file_name=None):
|
def decensor_image_variations(self, ori, colored, file_name=None):
|
||||||
@ -197,16 +232,25 @@ class Decensor(QtCore.QThread):
|
|||||||
#colored image is only used for finding the regions
|
#colored image is only used for finding the regions
|
||||||
regions = find_regions(colored.convert('RGB'), [v*255 for v in self.mask_color])
|
regions = find_regions(colored.convert('RGB'), [v*255 for v in self.mask_color])
|
||||||
print("Found {region_count} censored regions in this image!".format(region_count = len(regions)))
|
print("Found {region_count} censored regions in this image!".format(region_count = len(regions)))
|
||||||
|
self.signals.insertText_progressCursor.emit("Found {region_count} censored regions in this image!".format(region_count = len(regions)))
|
||||||
|
|
||||||
if len(regions) == 0 and not self.is_mosaic:
|
if len(regions) == 0 and not self.is_mosaic:
|
||||||
print("No green regions detected! Make sure you're using exactly the right color.")
|
print("No green (0,255,0) regions detected! Make sure you're using exactly the right color.")
|
||||||
|
self.signals.insertText_progressCursor.emit("No green (0,255,0) regions detected! Make sure you're using exactly the right color.\n")
|
||||||
return
|
return
|
||||||
|
|
||||||
self.signals.signal_ProgressBar_update_MAX_VALUE.emit("Found {} masked regions".format(len(regions)), len(regions))
|
# self.signals.signal_ProgressBar_update_MAX_VALUE.emit("Found {} masked regions".format(len(regions)), len(regions))
|
||||||
|
print("Found {} masked regions".format(len(regions)))
|
||||||
|
|
||||||
|
# self.signals.insertText_progressCursor.emit("Found {} masked regions\n".format(len(regions)))
|
||||||
|
self.signals.update_ProgressBar_MAX_VALUE.emit(len(regions))
|
||||||
|
self.signals.update_ProgressBar_SET_VALUE.emit(0)
|
||||||
|
|
||||||
output_img_array = ori_array[0].copy()
|
output_img_array = ori_array[0].copy()
|
||||||
|
|
||||||
for region_counter, region in enumerate(regions, 1):
|
for region_counter, region in enumerate(regions, 1):
|
||||||
self.signals.update_progress_LABEL.emit("\"Decensoring regions in image\"","Decensoring censor {}/{}".format(region_counter,len(regions)))
|
# self.signals.update_progress_LABEL.emit("\"Decensoring regions in image\"","Decensoring censor {}/{}".format(region_counter,len(regions)))
|
||||||
|
self.signals.insertText_progressCursor.emit("Decensoring regions in image, Decensoring censor {}/{}".format(region_counter,len(regions)))
|
||||||
bounding_box = expand_bounding(ori, region, expand_factor=1.5)
|
bounding_box = expand_bounding(ori, region, expand_factor=1.5)
|
||||||
crop_img = ori.crop(bounding_box)
|
crop_img = ori.crop(bounding_box)
|
||||||
# crop_img.show()
|
# crop_img.show()
|
||||||
@ -286,7 +330,9 @@ class Decensor(QtCore.QThread):
|
|||||||
bounding_height_index = row + bounding_box[1]
|
bounding_height_index = row + bounding_box[1]
|
||||||
if (bounding_width_index, bounding_height_index) in region:
|
if (bounding_width_index, bounding_height_index) in region:
|
||||||
output_img_array[bounding_height_index][bounding_width_index] = pred_img_array[i,:,:,:][row][col]
|
output_img_array[bounding_height_index][bounding_width_index] = pred_img_array[i,:,:,:][row][col]
|
||||||
self.signals.signal_ProgressBar_update_VALUE.emit("{} out of {} regions decensored.".format(region_counter, len(regions)), region_counter)
|
# self.signals.signal_ProgressBar_update_VALUE.emit("{} out of {} regions decensored.".format(region_counter, len(regions)), region_counter)
|
||||||
|
self.signals.update_ProgressBar_SET_VALUE.emit(region_counter)
|
||||||
|
self.signals.insertText_progressCursor.emit("{} out of {} regions decensored.\n".format(region_counter, len(regions)))
|
||||||
print("{region_counter} out of {region_count} regions decensored.".format(region_counter=region_counter, region_count=len(regions)))
|
print("{region_counter} out of {region_count} regions decensored.".format(region_counter=region_counter, region_count=len(regions)))
|
||||||
|
|
||||||
output_img_array = output_img_array * 255.0
|
output_img_array = output_img_array * 255.0
|
||||||
@ -298,7 +344,9 @@ class Decensor(QtCore.QThread):
|
|||||||
output_img = Image.fromarray(output_img_array.astype('uint8'))
|
output_img = Image.fromarray(output_img_array.astype('uint8'))
|
||||||
output_img = self.apply_variant(output_img, variant_number)
|
output_img = self.apply_variant(output_img, variant_number)
|
||||||
|
|
||||||
self.signals.update_progress_LABEL.emit("current image finished", "Decensoring of current image finished. Saving image...")
|
# self.signals.update_progress_LABEL.emit("current image finished", "Decensoring of current image finished. Saving image...")
|
||||||
|
self.signals.insertText_progressCursor.emit("Decensoring of current image finished. Saving image...")
|
||||||
|
print("current image finished")
|
||||||
|
|
||||||
if file_name != None:
|
if file_name != None:
|
||||||
#save the decensored image
|
#save the decensored image
|
||||||
@ -306,10 +354,11 @@ class Decensor(QtCore.QThread):
|
|||||||
file_name = base_name + " " + str(variant_number) + ext
|
file_name = base_name + " " + str(variant_number) + ext
|
||||||
save_path = os.path.join(self.decensor_output_path, file_name)
|
save_path = os.path.join(self.decensor_output_path, file_name)
|
||||||
output_img.save(save_path)
|
output_img.save(save_path)
|
||||||
|
|
||||||
print("Decensored image saved to {save_path}!".format(save_path=save_path))
|
print("Decensored image saved to {save_path}!".format(save_path=save_path))
|
||||||
return
|
self.signals.insertText_progressCursor.emit("Decensored image saved to {save_path}!".format(save_path=save_path))
|
||||||
|
self.signals.insertText_progressCursor.emit("="*30)
|
||||||
else:
|
else:
|
||||||
|
# Legacy Code piece ↓, used when DCPv1 had ui with Painting
|
||||||
print("Decensored image. Returning it.")
|
print("Decensored image. Returning it.")
|
||||||
return output_img
|
return output_img
|
||||||
|
|
||||||
|
72
main.py
72
main.py
@ -5,19 +5,27 @@
|
|||||||
# The greater the number of variations, the longer decensoring process will be.
|
# The greater the number of variations, the longer decensoring process will be.
|
||||||
|
|
||||||
import sys, time
|
import sys, time
|
||||||
from PySide2.QtWidgets import QWidget, QHBoxLayout, QVBoxLayout, QGridLayout, QGroupBox, QDesktopWidget, QApplication, QAction, qApp, QApplication, QMessageBox, QRadioButton, QPushButton, QTextEdit, QLabel, QSizePolicy,QMainWindow
|
from PySide2.QtWidgets import QWidget, QHBoxLayout, QVBoxLayout, QGridLayout, QGroupBox, QDesktopWidget, QApplication
|
||||||
|
from PySide2.QtWidgets import QAction, qApp, QApplication, QMessageBox, QRadioButton, QPushButton, QTextEdit, QLabel
|
||||||
|
from PySide2.QtWidgets import QSizePolicy,QMainWindow, QStatusBar, QProgressBar
|
||||||
from PySide2.QtCore import Qt, QObject
|
from PySide2.QtCore import Qt, QObject
|
||||||
from PySide2.QtGui import QFont, QTextCursor
|
from PySide2.QtGui import QFont, QTextCursor
|
||||||
|
|
||||||
from decensor import Decensor
|
from decensor import Decensor
|
||||||
|
from signals import Signals
|
||||||
|
|
||||||
from progressWindow import ProgressWindow
|
# from decensor import Decensor
|
||||||
|
|
||||||
|
# from progressWindow import ProgressWindow
|
||||||
|
|
||||||
class MainWindow(QWidget):
|
class MainWindow(QWidget):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
self.signals = Signals()
|
||||||
self.initUI()
|
self.initUI()
|
||||||
|
self.setSignals()
|
||||||
|
self.decensor = Decensor(self)
|
||||||
|
self.load_model()
|
||||||
|
|
||||||
def initUI(self):
|
def initUI(self):
|
||||||
|
|
||||||
@ -75,25 +83,60 @@ class MainWindow(QWidget):
|
|||||||
self.progressMessage.setReadOnly(True)
|
self.progressMessage.setReadOnly(True)
|
||||||
self.progressCursor.insertText("After you prepared your images, click on the decensor button once to begin decensoring.\nPlease be patient.\nDecensoring will take time.\n")
|
self.progressCursor.insertText("After you prepared your images, click on the decensor button once to begin decensoring.\nPlease be patient.\nDecensoring will take time.\n")
|
||||||
|
|
||||||
|
# Progress Bar
|
||||||
|
self.statusBar = QStatusBar(self)
|
||||||
|
self.progressBar = QProgressBar()
|
||||||
|
self.progressBar.setMinimum(0)
|
||||||
|
self.progressBar.setMaximum(100)
|
||||||
|
self.progressBar.setValue(0)
|
||||||
|
self.statusLabel = QLabel("Showing Progress")
|
||||||
|
|
||||||
|
self.statusBar.addWidget(self.statusLabel, 1)
|
||||||
|
self.statusBar.addWidget(self.progressBar, 2)
|
||||||
|
|
||||||
#put all groups into grid
|
#put all groups into grid
|
||||||
|
# addWidget(row, column, rowSpan, columnSpan)
|
||||||
grid_layout.addWidget(self.tutorialLabel, 0, 0, 1, 2)
|
grid_layout.addWidget(self.tutorialLabel, 0, 0, 1, 2)
|
||||||
grid_layout.addWidget(self.censorTypeGroupBox, 1, 0, 1, 1)
|
grid_layout.addWidget(self.censorTypeGroupBox, 1, 0, 1, 1)
|
||||||
grid_layout.addWidget(self.variationsGroupBox, 1, 1, 1, 1)
|
grid_layout.addWidget(self.variationsGroupBox, 1, 1, 1, 1)
|
||||||
grid_layout.addWidget(self.decensorButton, 2, 0, 1, 2)
|
grid_layout.addWidget(self.decensorButton, 2, 0, 1, 2)
|
||||||
grid_layout.addWidget(self.progressMessage, 3, 0, 4, 2)
|
grid_layout.addWidget(self.progressMessage, 3, 0, 1, 2)
|
||||||
|
grid_layout.addWidget(self.statusBar, 4, 0, 1, 2)
|
||||||
|
|
||||||
#window size settings
|
#window size settings
|
||||||
self.resize(500, 500)
|
self.resize(900, 600)
|
||||||
self.center()
|
self.center()
|
||||||
self.setWindowTitle('DeepCreamPy v2.2.0-beta')
|
self.setWindowTitle('DeepCreamPy v2.2.0-beta')
|
||||||
self.show()
|
self.show()
|
||||||
|
|
||||||
|
def load_model(self):
|
||||||
|
# load model to make able to decensor several times
|
||||||
|
self.decensorButton.setEnabled(False)
|
||||||
|
self.decensorButton.setText("Loading Machine Learning Model (Please Wait...)")
|
||||||
|
self.decensor.start()
|
||||||
|
self.decensor.signals = self.signals
|
||||||
|
self.progressCursor.insertText("Loading Decensor app consumes 6 GB memory at maximum")
|
||||||
|
|
||||||
|
def setSignals(self):
|
||||||
|
self.signals.update_decensorButton_Text.connect(self.decensorButton.setText)
|
||||||
|
self.signals.update_decensorButton_Enabled.connect(self.decensorButton.setEnabled)
|
||||||
|
self.signals.update_statusLabel_Text.connect(self.statusLabel.setText)
|
||||||
|
self.signals.update_ProgressBar_SET_VALUE.connect(self.progressBar.setValue)
|
||||||
|
self.signals.update_ProgressBar_MAX_VALUE.connect(self.progressBar.setMaximum)
|
||||||
|
self.signals.update_ProgressBar_MIN_VALUE.connect(self.progressBar.setMinimum)
|
||||||
|
# self.signals.insertText_progressCursor.connect(self.progressCursor.insertText)
|
||||||
|
self.signals.insertText_progressCursor.connect(self.progressMessage.append)
|
||||||
|
self.signals.clear_progressMessage.connect(self.progressMessage.clear)
|
||||||
|
self.signals.appendText_progressMessage.connect(self.progressMessage.append)
|
||||||
|
|
||||||
def decensorClicked(self):
|
def decensorClicked(self):
|
||||||
self.decensorButton.setEnabled(False)
|
self.decensorButton.setEnabled(False)
|
||||||
self.progressMessage.clear()
|
self.progressMessage.clear()
|
||||||
self.progressCursor.insertText("Decensoring has begun!\n")
|
self.progressCursor.insertText("Decensoring has begun!\n")
|
||||||
|
|
||||||
decensor = Decensor(text_edit = self.progressMessage, text_cursor = self.progressCursor, ui_mode = True)
|
# for now, decensor is initiated when this app is started
|
||||||
|
# self.decensor = Decensor(text_edit = self.progressMessage, text_cursor = self.progressCursor, ui_mode = True)
|
||||||
|
|
||||||
#https://stackoverflow.com/questions/42349470/pyqt-find-checked-radiobutton-in-a-group
|
#https://stackoverflow.com/questions/42349470/pyqt-find-checked-radiobutton-in-a-group
|
||||||
#set decensor to right settings
|
#set decensor to right settings
|
||||||
#censor type
|
#censor type
|
||||||
@ -103,9 +146,9 @@ class MainWindow(QWidget):
|
|||||||
if cb.isChecked():
|
if cb.isChecked():
|
||||||
censorType = cb.text()
|
censorType = cb.text()
|
||||||
if censorType == 'Bar censor':
|
if censorType == 'Bar censor':
|
||||||
decensor.is_mosaic = False
|
self.decensor.is_mosaic = False
|
||||||
else:
|
else:
|
||||||
decensor.is_mosaic = True
|
self.decensor.is_mosaic = True
|
||||||
|
|
||||||
#variations count
|
#variations count
|
||||||
variationsElements = self.variationsGroupBox.children()
|
variationsElements = self.variationsGroupBox.children()
|
||||||
@ -113,20 +156,13 @@ class MainWindow(QWidget):
|
|||||||
for vb in variationsButtons:
|
for vb in variationsButtons:
|
||||||
if vb.isChecked():
|
if vb.isChecked():
|
||||||
variations = int(vb.text())
|
variations = int(vb.text())
|
||||||
decensor.variations = variations
|
self.decensor.variations = variations
|
||||||
|
|
||||||
|
|
||||||
self.decensorButton.setEnabled(True)
|
self.decensorButton.setEnabled(False)
|
||||||
self.hide()
|
self.decensor.start()
|
||||||
self.progress = ProgressWindow(self, decensor = decensor)
|
|
||||||
# decensor.decensor_all_images_in_folder()
|
# decensor.decensor_all_images_in_folder()
|
||||||
|
|
||||||
# self.progress.hide()
|
|
||||||
# self.show()
|
|
||||||
|
|
||||||
# def showAbout(self):
|
|
||||||
# QMessageBox.about(self, 'About', "DeepCreamPy v2.2.0 \n Developed by deeppomf")
|
|
||||||
|
|
||||||
# #centers the main window
|
# #centers the main window
|
||||||
def center(self):
|
def center(self):
|
||||||
qr = self.frameGeometry()
|
qr = self.frameGeometry()
|
||||||
|
Loading…
Reference in New Issue
Block a user