├── README.md ├── hist.jpg ├── hist.dark.jpg ├── ressources ├── images │ ├── testImg │ │ └── 8.jpg │ ├── detected │ │ ├── eyes.jpg │ │ ├── mouth.jpg │ │ ├── nose.jpg │ │ └── croped_face.jpg │ ├── mirror │ │ └── mirror.PNG │ ├── rotated │ │ └── rotated90.PNG │ └── pertraitement │ │ ├── debruit_img.jpg │ │ ├── egalisation.jpg │ │ ├── filtre_median.jpg │ │ └── normalisation.jpg ├── rapport │ ├── Capture.PNG │ ├── index.html │ ├── style.css │ └── example_modified.html ├── ui │ ├── A.ui │ ├── console.ui │ ├── ElegantDark.ui │ ├── materialDark.ui │ ├── materialDark - Copie.ui │ ├── ManjaroStyle.ui │ └── AMOLED.ui └── Qss │ └── light.css ├── defined_fonctions ├── __pycache__ │ ├── detection.cpython-37.pyc │ ├── htmlmanip.cpython-37.pyc │ └── pretraitement.cpython-37.pyc ├── pretraitement.py ├── htmlmanip.py └── detection.py ├── LICENSE └── run.py /README.md: -------------------------------------------------------------------------------- 1 | # PyQT-ui-Face-detection-with-python 2 | manipulation images and face detection 3 | -------------------------------------------------------------------------------- /hist.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mehdi-YC/PyQT-ui-Face-detection-with-python/main/hist.jpg -------------------------------------------------------------------------------- /hist.dark.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mehdi-YC/PyQT-ui-Face-detection-with-python/main/hist.dark.jpg -------------------------------------------------------------------------------- /ressources/images/testImg/8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mehdi-YC/PyQT-ui-Face-detection-with-python/main/ressources/images/testImg/8.jpg -------------------------------------------------------------------------------- /ressources/rapport/Capture.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mehdi-YC/PyQT-ui-Face-detection-with-python/main/ressources/rapport/Capture.PNG -------------------------------------------------------------------------------- /ressources/images/detected/eyes.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mehdi-YC/PyQT-ui-Face-detection-with-python/main/ressources/images/detected/eyes.jpg -------------------------------------------------------------------------------- /ressources/images/detected/mouth.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mehdi-YC/PyQT-ui-Face-detection-with-python/main/ressources/images/detected/mouth.jpg -------------------------------------------------------------------------------- /ressources/images/detected/nose.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mehdi-YC/PyQT-ui-Face-detection-with-python/main/ressources/images/detected/nose.jpg -------------------------------------------------------------------------------- /ressources/images/mirror/mirror.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mehdi-YC/PyQT-ui-Face-detection-with-python/main/ressources/images/mirror/mirror.PNG -------------------------------------------------------------------------------- /ressources/images/rotated/rotated90.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mehdi-YC/PyQT-ui-Face-detection-with-python/main/ressources/images/rotated/rotated90.PNG -------------------------------------------------------------------------------- /ressources/images/detected/croped_face.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mehdi-YC/PyQT-ui-Face-detection-with-python/main/ressources/images/detected/croped_face.jpg -------------------------------------------------------------------------------- /ressources/images/pertraitement/debruit_img.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mehdi-YC/PyQT-ui-Face-detection-with-python/main/ressources/images/pertraitement/debruit_img.jpg -------------------------------------------------------------------------------- /ressources/images/pertraitement/egalisation.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mehdi-YC/PyQT-ui-Face-detection-with-python/main/ressources/images/pertraitement/egalisation.jpg -------------------------------------------------------------------------------- /ressources/images/pertraitement/filtre_median.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mehdi-YC/PyQT-ui-Face-detection-with-python/main/ressources/images/pertraitement/filtre_median.jpg -------------------------------------------------------------------------------- /ressources/images/pertraitement/normalisation.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mehdi-YC/PyQT-ui-Face-detection-with-python/main/ressources/images/pertraitement/normalisation.jpg -------------------------------------------------------------------------------- /defined_fonctions/__pycache__/detection.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mehdi-YC/PyQT-ui-Face-detection-with-python/main/defined_fonctions/__pycache__/detection.cpython-37.pyc -------------------------------------------------------------------------------- /defined_fonctions/__pycache__/htmlmanip.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mehdi-YC/PyQT-ui-Face-detection-with-python/main/defined_fonctions/__pycache__/htmlmanip.cpython-37.pyc -------------------------------------------------------------------------------- /defined_fonctions/__pycache__/pretraitement.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mehdi-YC/PyQT-ui-Face-detection-with-python/main/defined_fonctions/__pycache__/pretraitement.cpython-37.pyc -------------------------------------------------------------------------------- /ressources/rapport/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |

1 ere etape :

14 |
15 |

1 ere etape 2 :

16 |
17 |

2 eme etape :

18 |
19 |

3 eme etape :

20 |
21 |

vecteur

22 |
23 |
24 |
25 |
26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /ressources/rapport/style.css: -------------------------------------------------------------------------------- 1 | *{ 2 | background-color: #F0F0F0; 3 | } 4 | html{ 5 | display: flex; 6 | justify-content: center; 7 | } 8 | table,tr,td{ 9 | border: 1px black solid; 10 | } 11 | td{ 12 | width: 20px; 13 | height: 20px; 14 | } 15 | img{ 16 | width: 150px; 17 | height:150px; 18 | } 19 | 20 | #tableaux{ 21 | display: flex; 22 | justify-content: space-around; 23 | } 24 | #tableaux2{ 25 | justify-content: space-around; 26 | } 27 | #image{ 28 | justify-content: space-around; 29 | } 30 | #image2{ 31 | justify-content: space-around; 32 | } 33 | 34 | span{ 35 | font-size:20px; 36 | font-weight: bold; 37 | } 38 | 39 | #container{ 40 | justify-content: space-between; 41 | } 42 | 43 | #vec{ 44 | font-size: 14px; 45 | 46 | } 47 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Save Point 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /defined_fonctions/pretraitement.py: -------------------------------------------------------------------------------- 1 | 2 | import numpy as np 3 | import cv2 4 | import matplotlib.pyplot as plt 5 | 6 | 7 | def normalisation(pic): 8 | img = cv2.imread(pic, 0) 9 | norm_img = np.zeros((600, 600)) 10 | final_img = cv2.normalize(img, norm_img, 0, 255, cv2.NORM_MINMAX) 11 | path = pic.split('/') 12 | path = path[:-2] 13 | path = '/'.join(path) 14 | path = path+'/pertraitement/normalisation.jpg' 15 | cv2.imwrite(path, final_img) 16 | return(path) 17 | 18 | 19 | def egalisation_hist(pic): 20 | img = cv2.imread(pic, 0) 21 | img1 = cv2.equalizeHist(img) 22 | path = pic.split('/') 23 | path = path[:-2] 24 | path = '/'.join(path) 25 | path = path+'/pertraitement/egalisation.jpg' 26 | cv2.imwrite(path, img1) 27 | 28 | fig = plt.figure() 29 | plt.style.use("mehdi") 30 | ax1 = fig.add_subplot(1, 2, 1) 31 | ax1.hist(img.ravel(), 256, [0, 256]) 32 | 33 | ax2 = fig.add_subplot(1, 2, 2) 34 | ax2.hist(img1.ravel(), 256, [0, 256]) 35 | #extent = ax2.get_window_extent().transformed(fig.dpi_scale_trans.inverted()) 36 | 37 | plt.savefig('hist.dark.jpg') 38 | 39 | fig2 = plt.figure() 40 | plt.style.use('mehdilight') 41 | ax1 = fig2.add_subplot(1, 2, 1) 42 | ax1.hist(img.ravel(), 256, [0, 256]) 43 | 44 | ax2 = fig2.add_subplot(1, 2, 2) 45 | ax2.hist(img1.ravel(), 256, [0, 256]) 46 | 47 | plt.savefig('hist.jpg') 48 | 49 | # fig.savefig("/histogramme/hist.jpg") 50 | #plt.subplot(1, 2, 1) 51 | #plt.hist(img.ravel(), 256, [0, 256]) 52 | #plt.subplot(1, 2, 2) 53 | #plt.hist(img1.ravel(), 256, [0, 256]) 54 | # plt[0].savefig("/histogramme/hist.jpg") 55 | # plt.show() 56 | return(path) 57 | 58 | 59 | def filtre_median(pic): 60 | img = cv2.imread(pic, 0) 61 | img_median = cv2.medianBlur(img, 5) 62 | path = pic.split('/') 63 | path = path[:-2] 64 | path = '/'.join(path) 65 | path = path+'/pertraitement/filtre_median.jpg' 66 | cv2.imwrite(path, img_median) 67 | return(path) 68 | 69 | 70 | def debruit_img(pic): 71 | img = cv2.imread(pic, 0) 72 | cv2.fastNlMeansDenoising(img, img, 30.0, 7, 21) 73 | path = pic.split('/') 74 | path = path[:-2] 75 | path = '/'.join(path) 76 | path = path+'/pertraitement/debruit_img.jpg' 77 | cv2.imwrite(path, img) 78 | return(path) 79 | -------------------------------------------------------------------------------- /defined_fonctions/htmlmanip.py: -------------------------------------------------------------------------------- 1 | from bs4 import BeautifulSoup 2 | from tabulate import tabulate 3 | import numpy as np 4 | import os 5 | 6 | 7 | def writeHtml(mat, mat2, img, imgafter=""): 8 | path = os.path.abspath(os.getcwd()) 9 | html = open(path+"/ressources/rapport/index.html").read() 10 | 11 | soup = BeautifulSoup(html, 'lxml') 12 | vec = soup.find('div', {"id": "vec"}) 13 | image2Div = soup.find('div', {"id": "image2"}) 14 | imageDiv = soup.find('div', {"id": "image"}) 15 | tableauxDiv = soup.find('div', {"id": "tableaux"}) 16 | tableaux2Div = soup.find('div', {"id": "tableaux2"}) 17 | #vec = soup.find('div', {"id": "vec"}) 18 | 19 | image = soup.new_tag('img', src=img, alt="this is an image of my desktop") 20 | image2 = soup.new_tag('img', src=img, alt="this is an image of my desktop") 21 | image3 = soup.new_tag('img', src=img, alt="this is an image of my desktop") 22 | image4 = soup.new_tag('img', src=img, alt="this is an image of my desktop") 23 | 24 | # 1 ere Etape : 25 | imageDiv.append(image) 26 | imageDiv.append(BeautifulSoup( 27 | '====|>', "lxml")) 28 | imageDiv.append(image2) 29 | 30 | # 1 ere Etape : 31 | image2Div.append(image3) 32 | image2Div.append(BeautifulSoup( 33 | '====|>', "lxml")) 34 | image2Div.append(image4) 35 | 36 | # 2 eme Etape : 37 | tableauxDiv.append(BeautifulSoup(tabulate(mat, tablefmt='html'), "lxml")) 38 | tableauxDiv.append(BeautifulSoup( 39 | '


====|>
', "lxml")) 40 | tableauxDiv.append(BeautifulSoup(tabulate(mat2, tablefmt='html'), "lxml")) 41 | 42 | # 3 eme Etape : 43 | tableaux2Div.append(BeautifulSoup(tabulate(mat, tablefmt='html'), "lxml")) 44 | tableaux2Div.append(BeautifulSoup( 45 | '


====|>
', "lxml")) 46 | tableaux2Div.append(BeautifulSoup(tabulate(mat2, tablefmt='html'), "lxml")) 47 | 48 | # test 49 | test2 = '0.0'*64 50 | vec.append(BeautifulSoup( 51 | '
'+'0.0'*64+'
', "lxml")) 52 | # vec.append(BeautifulSoup( 53 | # tabulate(np.zeros((1, 64)), tablefmt='html'), "lxml")) 54 | with open(path+"/ressources/rapport/example_modified.html", "wb") as f_output: 55 | f_output.write(soup.prettify("utf-8")) 56 | 57 | return (path+"/ressources/rapport/example_modified.html") 58 | -------------------------------------------------------------------------------- /defined_fonctions/detection.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import cv2 3 | 4 | 5 | def face_detect(img): 6 | 7 | face_cascade = cv2.CascadeClassifier( 8 | cv2.data.haarcascades + 'haarcascade_frontalface_default.xml') 9 | 10 | pic = cv2.imread(img) 11 | img = img.split('.jpg')[0] 12 | gray = cv2.cvtColor(pic, cv2.COLOR_BGR2GRAY) 13 | 14 | faces = face_cascade.detectMultiScale(gray, 15 | scaleFactor=1.5, 16 | minNeighbors=5, 17 | minSize=(30, 30), 18 | flags=cv2.CASCADE_SCALE_IMAGE) 19 | path = img.split('/') 20 | path = path[:-2] 21 | path = '/'.join(path) 22 | print(path) 23 | path = path+'/detected/croped_face.jpg' 24 | print("[INFO] Found {0} Faces!".format(len(faces))) 25 | for (x, y, w, h) in faces: 26 | cv2.rectangle(pic, (x, y), (x + w, y + h), (255, 0, 0), 2) 27 | crop_img = pic[y:y+h, x:x+w] 28 | # cv2.imshow('Face_Detector', crop_img) 29 | cv2.imwrite(path, crop_img) 30 | return path 31 | 32 | 33 | def eyes_detect(place, img): 34 | img = face_detect(img) 35 | face_cascade = cv2.CascadeClassifier( 36 | cv2.data.haarcascades + 'haarcascade_frontalface_default.xml') 37 | eye_cascade = cv2.CascadeClassifier( 38 | cv2.data.haarcascades + "haarcascade_eye.xml") 39 | 40 | pic = cv2.imread(img) 41 | 42 | gray = cv2.cvtColor(pic, cv2.COLOR_BGR2GRAY) 43 | 44 | faces = face_cascade.detectMultiScale(gray, 45 | scaleFactor=1.5, 46 | minNeighbors=5, 47 | minSize=(8, 8), 48 | flags=cv2.CASCADE_SCALE_IMAGE) 49 | for (x, y, w, h) in faces: 50 | roi_gray = gray[y:y+h, x:x+w] 51 | roi_color = pic[y:y+h, x:x+w] 52 | eyes = eye_cascade.detectMultiScale(roi_gray) 53 | for (ex, ey, ew, eh) in eyes: 54 | cv2.rectangle(roi_color, (ex, ey), (ex+ew, ey+eh), (0, 255, 0), 3) 55 | for (ex, ey, ew, eh) in eyes: 56 | cv2.rectangle(roi_gray, (ex, ey), (ex+ew, ey+eh), (0, 255, 0), 3) 57 | # cv2.imwrite('eyes.jpg', pic) 58 | # cv2.imwrite('eyesG.jpg', pic) 59 | 60 | 61 | def dectect_nose(img): 62 | img = face_detect(img) 63 | nose_cascade = cv2.CascadeClassifier( 64 | cv2.samples.findFile('haarcascade_mcs_nose.xml')) 65 | 66 | pic = cv2.imread(img) 67 | img = img.split('.jpg')[0] 68 | gray = cv2.cvtColor(pic, cv2.COLOR_BGR2GRAY) 69 | 70 | nose_rects = nose_cascade.detectMultiScale(gray, 1.3, 5) 71 | path = img.split('/') 72 | path = path[:-2] 73 | path = '/'.join(path) 74 | print(path) 75 | path = path+'/detected/nose.jpg' 76 | for (x, y, w, h) in nose_rects: 77 | print('[INFO] Nose detected !') 78 | ny1 = int(y-y/8) 79 | ny2 = int(y-y/12) 80 | cv2.rectangle(pic, (x, ny1), 81 | (x+w, ny2+h), (0, 255, 0), 3) 82 | 83 | # cv2.imshow('nose_Detector', pic) 84 | 85 | cv2.imwrite(path, pic) 86 | cv2.destroyAllWindows() 87 | print(dir(pic)) 88 | return path 89 | 90 | # cv2.imwrite(img+'_corped_nose.jpg', pic[ny1+1:ny2+h, x+1:x+w]) 91 | 92 | 93 | def detect_mouth(img): 94 | img = face_detect(img) 95 | smile_cascade = cv2.CascadeClassifier( 96 | cv2.data.haarcascades + "haarcascade_smile.xml") 97 | 98 | pic = cv2.imread(img) 99 | 100 | gray = cv2.cvtColor(pic, cv2.COLOR_BGR2GRAY) 101 | 102 | smile = smile_cascade.detectMultiScale(gray, 1.7, 11) 103 | path = img.split('/') 104 | path = path[:-2] 105 | path = '/'.join(path) 106 | path = path+'/detected/mouth.jpg' 107 | print(path) 108 | try: 109 | y = max(s[1] for s in smile) 110 | for s in smile: 111 | if s[1] == y: 112 | (x, y, w, h) = s 113 | break 114 | except: 115 | (x, y, w, h) = smile 116 | 117 | y = int(y - 0.15*h) 118 | #crop_pic = pic[y:y+h, x:x+w] 119 | cv2.rectangle(pic, (x, y), (x+w, y+h), (0, 255, 0), 3) 120 | 121 | # cv2.imshow('mouth_Detector', crop_pic) 122 | cv2.imwrite(path, pic) 123 | return path 124 | 125 | 126 | def eyes_detect2(img): 127 | img = face_detect(img) 128 | face_cascade = cv2.CascadeClassifier( 129 | cv2.data.haarcascades + 'haarcascade_frontalface_default.xml') 130 | eye_cascade = cv2.CascadeClassifier( 131 | cv2.data.haarcascades + "haarcascade_eye.xml") 132 | 133 | pic = cv2.imread(img) 134 | img = img.split('.jpg')[0] 135 | gray = cv2.cvtColor(pic, cv2.COLOR_BGR2GRAY) 136 | faces = face_cascade.detectMultiScale(gray, 137 | scaleFactor=1.5, 138 | minNeighbors=5, 139 | minSize=(8, 8), 140 | flags=cv2.CASCADE_SCALE_IMAGE) 141 | roi_gray = gray 142 | roi_color = pic 143 | gray = cv2.cvtColor(pic, cv2.COLOR_BGR2GRAY) 144 | eyes = eye_cascade.detectMultiScale(roi_gray) 145 | path = img.split('/') 146 | path = path[:-2] 147 | path = '/'.join(path) 148 | path = path+'/detected/eyes.jpg' 149 | for (ex, ey, ew, eh) in eyes: 150 | print('[INFO] Eye detected !') 151 | cv2.rectangle(roi_color, (ex, ey), 152 | (ex+eh, ey+ew), (0, 255, 0), 3) 153 | a = pic[ey+1:ey+eh, ex+1:ex+ew] 154 | #cv2.imwrite(img+'_eye{}_corped.jpg'.format(ex), a) 155 | # crop = pic[y:y+h, x:x+w] 156 | 157 | cv2.imwrite(path, roi_color) 158 | return path 159 | 160 | 161 | # face_detect('a.jpg') 162 | # eyes_detect2('a_croped_face.jpg') 163 | # dectect_nose('a_croped_face.jpg') 164 | -------------------------------------------------------------------------------- /run.py: -------------------------------------------------------------------------------- 1 | from PyQt5.QtGui import QPixmap, QMovie 2 | from PyQt5.QtWidgets import QScrollArea, QFileDialog, QMainWindow, QApplication, QPushButton, QTextEdit 3 | from PyQt5 import uic, QtCore, QtGui, QtWidgets 4 | from PyQt5.QtWebKitWidgets import QWebView 5 | from PyQt5.QtCore import QUrl, Qt 6 | from defined_fonctions.htmlmanip import writeHtml 7 | from defined_fonctions import detection 8 | from defined_fonctions import pretraitement 9 | 10 | import cv2 11 | import sys 12 | import os 13 | import numpy as np 14 | 15 | 16 | class UI(QMainWindow): 17 | def __init__(self): 18 | super(UI, self).__init__() 19 | self.isLight = False 20 | self.isDrawed = False 21 | self.imageIsSet = False 22 | self.enabeled = False 23 | self.original = "" 24 | self.setWindowFlags( 25 | QtCore.Qt.Window | 26 | QtCore.Qt.CustomizeWindowHint | 27 | QtCore.Qt.WindowTitleHint | 28 | QtCore.Qt.WindowCloseButtonHint | 29 | QtCore.Qt.WindowStaysOnTopHint 30 | ) 31 | 32 | self.light = open("ressources/Qss/light.css", "r").read() 33 | self.dark = open("ressources/Qss/dark.css", "r").read() 34 | uic.loadUi("ressources/ui/aio.ui", self) 35 | 36 | self.tabWidget.setTabEnabled(0, True) 37 | self.tabWidget.setTabEnabled(1, False) 38 | self.tabWidget.setTabEnabled(2, False) 39 | self.tabWidget.setTabEnabled(3, False) 40 | 41 | self.tabWidget.setTabEnabled(1, False) 42 | self.imgChanger.clicked.connect(self.openFileNameDialog) 43 | self.Detection.clicked.connect(lambda: self.EnableDetection(True)) 44 | self.Pretraitement.clicked.connect( 45 | lambda: self.EnablePretraitement(True)) 46 | self.Reconaissance.clicked.connect(self.showReport) 47 | self.Rotation.clicked.connect(self.rotate) 48 | self.Miroir.clicked.connect(self.mirror_flip) 49 | self.tabWidget.currentChanged.connect(self.disableReport) 50 | 51 | self.scroll = QtWidgets.QScrollArea(self.Report) 52 | self.scroll.setGeometry(QtCore.QRect(0, 0, 795, 500)) 53 | self.web = QWebView() 54 | self.web.setGeometry(QtCore.QRect(0, 0, 795, 1500)) 55 | self.scroll.setWidget(self.web) 56 | self.web.setEnabled(False) 57 | 58 | self.scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) 59 | self.scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) 60 | self.DNez.clicked.connect( 61 | lambda: self.w_dectect_nose(self.original)) 62 | self.DVisage.clicked.connect( 63 | lambda: self.w_dectect_face(self.original)) 64 | self.DBouche.clicked.connect( 65 | lambda: self.w_dectect_mouth(self.original)) 66 | self.DYeux.clicked.connect( 67 | lambda: self.w_dectect_eyes(self.original)) 68 | self.Norm.clicked.connect(self.w_normalisation) 69 | self.Egaliser.clicked.connect(self.w_egalisation_hist) 70 | self.Median.clicked.connect(self.w_filtre_median) 71 | self.Denoising.clicked.connect(self.w_debruit_img) 72 | self.resset.clicked.connect(self.resset_img) 73 | self.wlcm.clicked.connect(self.goToMain) 74 | path = os.path.abspath(os.getcwd()) 75 | self.gif = QMovie(path+"/welcome.gif") 76 | print(path+"\welcome.gif") 77 | self.label.setMovie(self.gif) 78 | self.gif.start() 79 | 80 | # extra 81 | self.ThemeButton.clicked.connect(self.extra) 82 | 83 | self.show() 84 | 85 | def openFileNameDialog(self): 86 | options = QFileDialog.Options() 87 | options |= QFileDialog.DontUseNativeDialog 88 | fileName, _ = QFileDialog.getOpenFileName( 89 | self, "Select your Image", "./ressources/images/testImg/", "Image (*.PNG *.JPG)", options=options) 90 | if fileName: 91 | self.original = fileName 92 | self.changable = fileName 93 | pixmap = QPixmap(fileName) 94 | pixmap.scaled(self.MyImage.width(), self.MyImage.height()) 95 | self.MyImage.setPixmap(pixmap) 96 | self.imageIsSet = True 97 | self.EnableButtons() 98 | 99 | # BUTTONS MANAGEMENT : 100 | def EnableDetection(self, state): 101 | if self.imageIsSet: 102 | self.DVisage.setEnabled(state) 103 | self.DNez.setEnabled(state) 104 | self.DYeux.setEnabled(state) 105 | self.DBouche.setEnabled(state) 106 | 107 | def EnablePretraitement(self, state): 108 | if self.imageIsSet: 109 | self.Norm.setEnabled(state) 110 | self.Denoising.setEnabled(state) 111 | self.Egaliser.setEnabled(state) 112 | self.Median.setEnabled(state) 113 | 114 | def EnableButtons(self, state=True): 115 | self.Miroir.setEnabled(state) 116 | self.Reconaissance.setEnabled(state) 117 | self.Detection.setEnabled(state) 118 | self.Rotation.setEnabled(state) 119 | self.Pretraitement.setEnabled(state) 120 | self.resset.setEnabled(state) 121 | 122 | # REPORT : 123 | def showReport(self): 124 | myfile = writeHtml(np.zeros((8, 8)), np.zeros((8, 8)), 125 | "../images/testImg/"+self.original.split('/')[-1]) 126 | 127 | self.web.load(QUrl.fromLocalFile(myfile)) 128 | self.tabWidget.setTabEnabled(2, True) 129 | self.tabWidget.setCurrentIndex(2) 130 | self.enabeled = True 131 | 132 | def disableReport(self): 133 | if self.enabeled: 134 | self.tabWidget.setTabEnabled(1, False) 135 | self.enabeled = False 136 | 137 | 138 | # BUTTONS FUNCTIONS------------------------------ 139 | # EXTRA : 140 | 141 | def goToMain(self): 142 | self.tabWidget.setCurrentIndex(1) 143 | self.tabWidget.setTabEnabled(1, True) 144 | self.tabWidget.setTabEnabled(0, False) 145 | self.tabWidget.setTabEnabled(3, True) 146 | 147 | def resset_img(self): 148 | self.hist.clear() 149 | self.MyImage.clear() 150 | self.isLight = False 151 | self.isDrawed = False 152 | self.imageIsSet = False 153 | self.enabeled = False 154 | self.original = "" 155 | self.EnableButtons(False) 156 | 157 | def extra(self): 158 | if self.isLight: 159 | self.setStyleSheet(self.dark) 160 | self.ThemeButton.setText("☾ Theme") 161 | self.isLight = False 162 | if self.isDrawed: 163 | pixmap2 = QPixmap("hist.dark.jpg") 164 | pixmap2.scaled(self.hist.width(), self.hist.height()) 165 | self.hist.setPixmap(pixmap2) 166 | 167 | else: 168 | self.setStyleSheet(self.light) 169 | self.ThemeButton.setText("☼ Theme") 170 | self.isLight = True 171 | if self.isDrawed: 172 | pixmap2 = QPixmap("hist.jpg") 173 | pixmap2.scaled(self.hist.width(), self.hist.height()) 174 | self.hist.setPixmap(pixmap2) 175 | 176 | def rotate(self): 177 | img = cv2.imread(self.changable) 178 | img_rotate_90_clockwise = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE) 179 | cv2.imwrite('ressources/images/rotated/rotated90.PNG', 180 | img_rotate_90_clockwise) 181 | self.changable = 'ressources/images/rotated/rotated90.PNG' 182 | pixmap = QPixmap(self.changable) 183 | pixmap.scaled(self.MyImage.width(), self.MyImage.height()) 184 | self.MyImage.setPixmap(pixmap) 185 | 186 | def mirror_flip(self): 187 | img = cv2.imread(self.changable) 188 | img_mirror_flip = cv2.flip(img, 1) 189 | cv2.imwrite('ressources/images/mirror/mirror.PNG', 190 | img_mirror_flip) 191 | self.changable = 'ressources/images/mirror/mirror.PNG' 192 | pixmap = QPixmap(self.changable) 193 | pixmap.scaled(self.MyImage.width(), self.MyImage.height()) 194 | self.MyImage.setPixmap(pixmap) 195 | 196 | # DETECTION : 197 | 198 | def w_dectect_nose(self, img): 199 | path = detection.dectect_nose(img) 200 | pixmap = QPixmap(path) 201 | pixmap.scaled(self.MyImage.width(), self.MyImage.height()) 202 | self.MyImage.setPixmap(pixmap) 203 | self.EnableDetection(False) 204 | 205 | def w_dectect_face(self, img): 206 | path = detection.face_detect(img) 207 | pixmap = QPixmap(path) 208 | pixmap.scaled(self.MyImage.width(), self.MyImage.height()) 209 | self.MyImage.setPixmap(pixmap) 210 | self.EnableDetection(False) 211 | 212 | def w_dectect_mouth(self, img): 213 | path = detection.detect_mouth(img) 214 | pixmap = QPixmap(path) 215 | pixmap.scaled(self.MyImage.width(), self.MyImage.height()) 216 | self.MyImage.setPixmap(pixmap) 217 | self.EnableDetection(False) 218 | 219 | def w_dectect_eyes(self, img): 220 | path = detection.eyes_detect2(img) 221 | pixmap = QPixmap(path) 222 | pixmap.scaled(self.MyImage.width(), self.MyImage.height()) 223 | self.MyImage.setPixmap(pixmap) 224 | self.EnableDetection(False) 225 | 226 | # PRETRAITEMENT : 227 | def w_normalisation(self): 228 | path = pretraitement.normalisation(self.original) 229 | pixmap = QPixmap(path) 230 | pixmap.scaled(self.MyImage.width(), self.MyImage.height()) 231 | self.MyImage.setPixmap(pixmap) 232 | self.EnablePretraitement(False) 233 | 234 | def w_egalisation_hist(self): 235 | path = pretraitement.egalisation_hist(self.original) 236 | pixmap = QPixmap(path) 237 | pixmap.scaled(self.MyImage.width(), self.MyImage.height()) 238 | self.MyImage.setPixmap(pixmap) 239 | 240 | if self.isLight: 241 | pixmap2 = QPixmap("hist.jpg") 242 | pixmap2.scaled(self.hist.width(), self.hist.height()) 243 | self.hist.setPixmap(pixmap2) 244 | else: 245 | pixmap2 = QPixmap("hist.dark.jpg") 246 | pixmap2.scaled(self.hist.width(), self.hist.height()) 247 | self.hist.setPixmap(pixmap2) 248 | self.isDrawed = True 249 | 250 | self.EnablePretraitement(False) 251 | 252 | def w_filtre_median(self): 253 | path = pretraitement.filtre_median(self.original) 254 | pixmap = QPixmap(path) 255 | pixmap.scaled(self.MyImage.width(), self.MyImage.height()) 256 | self.MyImage.setPixmap(pixmap) 257 | self.EnablePretraitement(False) 258 | 259 | def w_debruit_img(self): 260 | path = pretraitement.debruit_img(self.original) 261 | pixmap = QPixmap(path) 262 | pixmap.scaled(self.MyImage.width(), self.MyImage.height()) 263 | self.MyImage.setPixmap(pixmap) 264 | self.EnablePretraitement(False) 265 | 266 | 267 | if __name__ == "__main__": 268 | app = QApplication(sys.argv) 269 | window = UI() 270 | app.exec_() 271 | -------------------------------------------------------------------------------- /ressources/ui/A.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWindow 4 | 5 | 6 | 7 | 0 8 | 0 9 | 800 10 | 600 11 | 12 | 13 | 14 | MainWindow 15 | 16 | 17 | 18 | 19 | /* 20 | COLOR_DARK = #191919 21 | COLOR_MEDIUM = #353535 22 | COLOR_MEDLIGHT = #5A5A5A 23 | COLOR_LIGHT = #DDDDDD 24 | COLOR_ACCENT = #3D7848 25 | */ 26 | 27 | * { 28 | background: #191919; 29 | color: #DDDDDD; 30 | border: 1px solid #5A5A5A; 31 | } 32 | 33 | QWidget::item:selected { 34 | background: #3D7848; 35 | } 36 | 37 | QCheckBox, QRadioButton { 38 | border: none; 39 | } 40 | 41 | QRadioButton::indicator, QCheckBox::indicator { 42 | width: 13px; 43 | height: 13px; 44 | } 45 | 46 | QRadioButton::indicator::unchecked, QCheckBox::indicator::unchecked { 47 | border: 1px solid #5A5A5A; 48 | background: none; 49 | } 50 | 51 | QRadioButton::indicator:unchecked:hover, QCheckBox::indicator:unchecked:hover { 52 | border: 1px solid #DDDDDD; 53 | } 54 | 55 | QRadioButton::indicator::checked, QCheckBox::indicator::checked { 56 | border: 1px solid #5A5A5A; 57 | background: #5A5A5A; 58 | } 59 | 60 | QRadioButton::indicator:checked:hover, QCheckBox::indicator:checked:hover { 61 | border: 1px solid #DDDDDD; 62 | background: #DDDDDD; 63 | } 64 | 65 | QGroupBox { 66 | margin-top: 6px; 67 | } 68 | 69 | QGroupBox::title { 70 | top: -7px; 71 | left: 7px; 72 | } 73 | 74 | QScrollBar { 75 | border: 1px solid #5A5A5A; 76 | background: #191919; 77 | } 78 | 79 | QScrollBar:horizontal { 80 | height: 15px; 81 | margin: 0px 0px 0px 32px; 82 | } 83 | 84 | QScrollBar:vertical { 85 | width: 15px; 86 | margin: 32px 0px 0px 0px; 87 | } 88 | 89 | QScrollBar::handle { 90 | background: #353535; 91 | border: 1px solid #5A5A5A; 92 | } 93 | 94 | QScrollBar::handle:horizontal { 95 | border-width: 0px 1px 0px 1px; 96 | } 97 | 98 | QScrollBar::handle:vertical { 99 | border-width: 1px 0px 1px 0px; 100 | } 101 | 102 | QScrollBar::handle:horizontal { 103 | min-width: 20px; 104 | } 105 | 106 | QScrollBar::handle:vertical { 107 | min-height: 20px; 108 | } 109 | 110 | QScrollBar::add-line, QScrollBar::sub-line { 111 | background:#353535; 112 | border: 1px solid #5A5A5A; 113 | subcontrol-origin: margin; 114 | } 115 | 116 | QScrollBar::add-line { 117 | position: absolute; 118 | } 119 | 120 | QScrollBar::add-line:horizontal { 121 | width: 15px; 122 | subcontrol-position: left; 123 | left: 15px; 124 | } 125 | 126 | QScrollBar::add-line:vertical { 127 | height: 15px; 128 | subcontrol-position: top; 129 | top: 15px; 130 | } 131 | 132 | QScrollBar::sub-line:horizontal { 133 | width: 15px; 134 | subcontrol-position: top left; 135 | } 136 | 137 | QScrollBar::sub-line:vertical { 138 | height: 15px; 139 | subcontrol-position: top; 140 | } 141 | 142 | QScrollBar:left-arrow, QScrollBar::right-arrow, QScrollBar::up-arrow, QScrollBar::down-arrow { 143 | border: 1px solid #5A5A5A; 144 | width: 3px; 145 | height: 3px; 146 | } 147 | 148 | QScrollBar::add-page, QScrollBar::sub-page { 149 | background: none; 150 | } 151 | 152 | QAbstractButton:hover { 153 | background: #353535; 154 | } 155 | 156 | QAbstractButton:pressed { 157 | background: #5A5A5A; 158 | } 159 | 160 | QAbstractItemView { 161 | show-decoration-selected: 1; 162 | selection-background-color: #3D7848; 163 | selection-color: #DDDDDD; 164 | alternate-background-color: #353535; 165 | } 166 | 167 | QHeaderView { 168 | border: 1px solid #5A5A5A; 169 | } 170 | 171 | QHeaderView::section { 172 | background: #191919; 173 | border: 1px solid #5A5A5A; 174 | padding: 4px; 175 | } 176 | 177 | QHeaderView::section:selected, QHeaderView::section::checked { 178 | background: #353535; 179 | } 180 | 181 | QTableView { 182 | gridline-color: #5A5A5A; 183 | } 184 | 185 | QTabBar { 186 | margin-left: 2px; 187 | } 188 | 189 | QTabBar::tab { 190 | border-radius: 0px; 191 | padding: 4px; 192 | margin: 4px; 193 | } 194 | 195 | QTabBar::tab:selected { 196 | background: #353535; 197 | } 198 | 199 | QComboBox::down-arrow { 200 | border: 1px solid #5A5A5A; 201 | background: #353535; 202 | } 203 | 204 | QComboBox::drop-down { 205 | border: 1px solid #5A5A5A; 206 | background: #353535; 207 | } 208 | 209 | QComboBox::down-arrow { 210 | width: 3px; 211 | height: 3px; 212 | border: 1px solid #5A5A5A; 213 | } 214 | 215 | QAbstractSpinBox { 216 | padding-right: 15px; 217 | } 218 | 219 | QAbstractSpinBox::up-button, QAbstractSpinBox::down-button { 220 | border: 1px solid #5A5A5A; 221 | background: #353535; 222 | subcontrol-origin: border; 223 | } 224 | 225 | QAbstractSpinBox::up-arrow, QAbstractSpinBox::down-arrow { 226 | width: 3px; 227 | height: 3px; 228 | border: 1px solid #5A5A5A; 229 | } 230 | 231 | QSlider { 232 | border: none; 233 | } 234 | 235 | QSlider::groove:horizontal { 236 | height: 5px; 237 | margin: 4px 0px 4px 0px; 238 | } 239 | 240 | QSlider::groove:vertical { 241 | width: 5px; 242 | margin: 0px 4px 0px 4px; 243 | } 244 | 245 | QSlider::handle { 246 | border: 1px solid #5A5A5A; 247 | background: #353535; 248 | } 249 | 250 | QSlider::handle:horizontal { 251 | width: 15px; 252 | margin: -4px 0px -4px 0px; 253 | } 254 | 255 | QSlider::handle:vertical { 256 | height: 15px; 257 | margin: 0px -4px 0px -4px; 258 | } 259 | 260 | QSlider::add-page:vertical, QSlider::sub-page:horizontal { 261 | background: #3D7848; 262 | } 263 | 264 | QSlider::sub-page:vertical, QSlider::add-page:horizontal { 265 | background: #353535; 266 | } 267 | 268 | QLabel { 269 | border: none; 270 | } 271 | 272 | QProgressBar { 273 | text-align: center; 274 | } 275 | 276 | QProgressBar::chunk { 277 | width: 1px; 278 | background-color: #3D7848; 279 | } 280 | 281 | QMenu::separator { 282 | background: #353535; 283 | } 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 0 293 | 0 294 | 801 295 | 581 296 | 297 | 298 | 299 | 0 300 | 301 | 302 | false 303 | 304 | 305 | false 306 | 307 | 308 | false 309 | 310 | 311 | 312 | Main 313 | 314 | 315 | 316 | 317 | 450 318 | 420 319 | 300 320 | 50 321 | 322 | 323 | 324 | New Image 325 | 326 | 327 | 328 | 329 | 330 | 450 331 | 50 332 | 300 333 | 300 334 | 335 | 336 | 337 | Add Image 338 | 339 | 340 | true 341 | 342 | 343 | 0 344 | 345 | 346 | 347 | 348 | 349 | 290 350 | 40 351 | 130 352 | 51 353 | 354 | 355 | 356 | Show Database 357 | 358 | 359 | 360 | 361 | false 362 | 363 | 364 | 365 | 20 366 | 40 367 | 250 368 | 51 369 | 370 | 371 | 372 | Reconaissance 373 | 374 | 375 | 376 | 377 | false 378 | 379 | 380 | 381 | 20 382 | 120 383 | 190 384 | 34 385 | 386 | 387 | 388 | Detection 389 | 390 | 391 | 392 | 393 | false 394 | 395 | 396 | 397 | 230 398 | 120 399 | 190 400 | 34 401 | 402 | 403 | 404 | Prétraitements 405 | 406 | 407 | 408 | 409 | false 410 | 411 | 412 | 413 | 20 414 | 170 415 | 90 416 | 35 417 | 418 | 419 | 420 | Visage 421 | 422 | 423 | 424 | 425 | false 426 | 427 | 428 | 429 | 120 430 | 170 431 | 90 432 | 35 433 | 434 | 435 | 436 | Nez 437 | 438 | 439 | 440 | 441 | false 442 | 443 | 444 | 445 | 120 446 | 210 447 | 90 448 | 35 449 | 450 | 451 | 452 | Bouche 453 | 454 | 455 | 456 | 457 | false 458 | 459 | 460 | 461 | 20 462 | 210 463 | 90 464 | 35 465 | 466 | 467 | 468 | Yeux 469 | 470 | 471 | 472 | 473 | false 474 | 475 | 476 | 477 | 330 478 | 210 479 | 90 480 | 35 481 | 482 | 483 | 484 | Denoising 485 | 486 | 487 | 488 | 489 | false 490 | 491 | 492 | 493 | 230 494 | 210 495 | 90 496 | 35 497 | 498 | 499 | 500 | Median 501 | 502 | 503 | 504 | 505 | false 506 | 507 | 508 | 509 | 330 510 | 170 511 | 90 512 | 35 513 | 514 | 515 | 516 | Egaliser 517 | 518 | 519 | 520 | 521 | false 522 | 523 | 524 | 525 | 230 526 | 170 527 | 90 528 | 35 529 | 530 | 531 | 532 | Normaliser 533 | 534 | 535 | 536 | 537 | false 538 | 539 | 540 | 541 | 230 542 | 280 543 | 190 544 | 34 545 | 546 | 547 | 548 | Miroir 549 | 550 | 551 | 552 | 553 | false 554 | 555 | 556 | 557 | 20 558 | 280 559 | 190 560 | 34 561 | 562 | 563 | 564 | Rotation 565 | 566 | 567 | 568 | 569 | 570 | 20 571 | 100 572 | 400 573 | 20 574 | 575 | 576 | 577 | Qt::Horizontal 578 | 579 | 580 | 581 | 582 | 583 | 20 584 | 250 585 | 400 586 | 20 587 | 588 | 589 | 590 | Qt::Horizontal 591 | 592 | 593 | 594 | 595 | 596 | 20 597 | 260 598 | 400 599 | 20 600 | 601 | 602 | 603 | Qt::Horizontal 604 | 605 | 606 | 607 | 608 | 609 | 20 610 | 90 611 | 400 612 | 20 613 | 614 | 615 | 616 | Qt::Horizontal 617 | 618 | 619 | 620 | 621 | 622 | 20 623 | 340 624 | 400 625 | 140 626 | 627 | 628 | 629 | Qlabel{ 630 | background: qlineargradient(spread:pad, x1:0, y1:1, x2:0, y2:0, stop:0 rgba(0, 0, 0, 255), stop:0.05 rgba(14, 8, 73, 255), stop:0.36 rgba(28, 17, 145, 255), stop:0.6 rgba(126, 14, 81, 255), stop:0.75 rgba(234, 11, 11, 255), stop:0.79 rgba(244, 70, 5, 255), stop:0.86 rgba(255, 136, 0, 255), stop:0.935 rgba(239, 236, 55, 255))} 631 | 632 | 633 | Histogramme 634 | 635 | 636 | 637 | 638 | 639 | true 640 | 641 | 642 | Report 643 | 644 | 645 | 646 | 647 | 648 | 649 | 650 | 0 651 | 0 652 | 800 653 | 23 654 | 655 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | -------------------------------------------------------------------------------- /ressources/ui/console.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWindow 4 | 5 | 6 | 7 | 0 8 | 0 9 | 800 10 | 600 11 | 12 | 13 | 14 | MainWindow 15 | 16 | 17 | /* 18 | Dark Console Style Sheet for QT Applications 19 | Author: Jaime A. Quiroga P. 20 | Company: GTRONICK 21 | Last updated: 24/05/2018, 17:12. 22 | Available at: https://github.com/GTRONICK/QSS/blob/master/ConsoleStyle.qss 23 | */ 24 | QWidget { 25 | background-color:rgb(0, 0, 0); 26 | color: rgb(240, 240, 240); 27 | border-color: rgb(58, 58, 58); 28 | } 29 | 30 | QPlainTextEdit { 31 | background-color:rgb(0, 0, 0); 32 | color: rgb(200, 200, 200); 33 | selection-background-color: rgb(255, 153, 0); 34 | selection-color: rgb(0, 0, 0); 35 | } 36 | 37 | QTabWidget::pane { 38 | border-top: 1px solid #000000; 39 | } 40 | 41 | QTabBar::tab { 42 | background-color:rgb(0, 0, 0); 43 | border-style: outset; 44 | border-width: 1px; 45 | border-right-color: qlineargradient(spread:pad, x1:0.4, y1:0.5, x2:0.6, y2:0.5, stop:0 rgba(115, 115, 115, 255), stop:1 rgba(62, 62, 62, 255)); 46 | border-left-color: qlineargradient(spread:pad, x1:0.6, y1:0.5, x2:0.4, y2:0.5, stop:0 rgba(115, 115, 115, 255), stop:1 rgba(62, 62, 62, 255)); 47 | border-bottom-color: rgb(58, 58, 58); 48 | border-bottom-width: 1px; 49 | border-top-width: 0px; 50 | border-style: solid; 51 | color: rgb(255, 153, 0); 52 | padding: 4px; 53 | } 54 | 55 | QTabBar::tab:selected, QTabBar::tab:hover { 56 | color: rgb(255, 255, 255); 57 | background-color:rgb(0, 0, 0); 58 | border-color:rgb(42, 42, 42); 59 | margin-left: 0px; 60 | margin-right: 0px; 61 | border-bottom-right-radius:4px; 62 | border-bottom-left-radius:4px; 63 | } 64 | 65 | QTabBar::tab:last:selected { 66 | background-color:rgb(0, 0, 0); 67 | border-color:rgb(42, 42, 42); 68 | margin-left: 0px; 69 | margin-right: 0px; 70 | border-bottom-right-radius:4px; 71 | border-bottom-left-radius:4px; 72 | } 73 | 74 | QTabBar::tab:!selected { 75 | margin-bottom: 4px; 76 | border-bottom-right-radius:4px; 77 | border-bottom-left-radius:4px; 78 | } 79 | 80 | QPushButton{ 81 | border-style: outset; 82 | border-width: 2px; 83 | border-top-color: qlineargradient(spread:pad, x1:0.5, y1:0.6, x2:0.5, y2:0.4, stop:0 rgba(115, 115, 115, 255), stop:1 rgba(62, 62, 62, 255)); 84 | border-right-color: qlineargradient(spread:pad, x1:0.4, y1:0.5, x2:0.6, y2:0.5, stop:0 rgba(115, 115, 115, 255), stop:1 rgba(62, 62, 62, 255)); 85 | border-left-color: qlineargradient(spread:pad, x1:0.6, y1:0.5, x2:0.4, y2:0.5, stop:0 rgba(115, 115, 115, 255), stop:1 rgba(62, 62, 62, 255)); 86 | border-bottom-color: rgb(58, 58, 58); 87 | border-bottom-width: 1px; 88 | border-style: solid; 89 | color: rgb(255, 255, 255); 90 | padding: 6px; 91 | background-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(77, 77, 77, 255), stop:1 rgba(97, 97, 97, 255)); 92 | } 93 | 94 | QPushButton:hover{ 95 | border-style: outset; 96 | border-width: 2px; 97 | border-top-color: qlineargradient(spread:pad, x1:0.5, y1:0.6, x2:0.5, y2:0.4, stop:0 rgba(180, 180, 180, 255), stop:1 rgba(110, 110, 110, 255)); 98 | border-right-color: qlineargradient(spread:pad, x1:0.4, y1:0.5, x2:0.6, y2:0.5, stop:0 rgba(180, 180, 180, 255), stop:1 rgba(110, 110, 110, 255)); 99 | border-left-color: qlineargradient(spread:pad, x1:0.6, y1:0.5, x2:0.4, y2:0.5, stop:0 rgba(180, 180, 180, 255), stop:1 rgba(110, 110, 110, 255)); 100 | border-bottom-color: rgb(115, 115, 115); 101 | border-bottom-width: 1px; 102 | border-style: solid; 103 | color: rgb(255, 255, 255); 104 | padding: 6px; 105 | background-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(107, 107, 107, 255), stop:1 rgba(157, 157, 157, 255)); 106 | } 107 | 108 | QPushButton:pressed{ 109 | border-style: outset; 110 | border-width: 2px; 111 | border-top-color: qlineargradient(spread:pad, x1:0.5, y1:0.6, x2:0.5, y2:0.4, stop:0 rgba(62, 62, 62, 255), stop:1 rgba(22, 22, 22, 255)); 112 | border-right-color: qlineargradient(spread:pad, x1:0.4, y1:0.5, x2:0.6, y2:0.5, stop:0 rgba(115, 115, 115, 255), stop:1 rgba(62, 62, 62, 255)); 113 | border-left-color: qlineargradient(spread:pad, x1:0.6, y1:0.5, x2:0.4, y2:0.5, stop:0 rgba(115, 115, 115, 255), stop:1 rgba(62, 62, 62, 255)); 114 | border-bottom-color: rgb(58, 58, 58); 115 | border-bottom-width: 1px; 116 | border-style: solid; 117 | color: rgb(255, 255, 255); 118 | padding: 6px; 119 | background-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(77, 77, 77, 255), stop:1 rgba(97, 97, 97, 255)); 120 | } 121 | 122 | QPushButton:disabled{ 123 | border-style: outset; 124 | border-width: 2px; 125 | border-top-color: qlineargradient(spread:pad, x1:0.5, y1:0.6, x2:0.5, y2:0.4, stop:0 rgba(115, 115, 115, 255), stop:1 rgba(62, 62, 62, 255)); 126 | border-right-color: qlineargradient(spread:pad, x1:0.4, y1:0.5, x2:0.6, y2:0.5, stop:0 rgba(115, 115, 115, 255), stop:1 rgba(62, 62, 62, 255)); 127 | border-left-color: qlineargradient(spread:pad, x1:0.6, y1:0.5, x2:0.4, y2:0.5, stop:0 rgba(115, 115, 115, 255), stop:1 rgba(62, 62, 62, 255)); 128 | border-bottom-color: rgb(58, 58, 58); 129 | border-bottom-width: 1px; 130 | border-style: solid; 131 | color: rgb(0, 0, 0); 132 | padding: 6px; 133 | background-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(57, 57, 57, 255), stop:1 rgba(77, 77, 77, 255)); 134 | } 135 | 136 | QLineEdit { 137 | border-width: 1px; border-radius: 4px; 138 | border-color: rgb(58, 58, 58); 139 | border-style: inset; 140 | padding: 0 8px; 141 | color: rgb(255, 255, 255); 142 | background:rgb(101, 101, 101); 143 | selection-background-color: rgb(187, 187, 187); 144 | selection-color: rgb(60, 63, 65); 145 | } 146 | 147 | QProgressBar { 148 | text-align: center; 149 | color: rgb(255, 255, 255); 150 | border-width: 1px; 151 | border-radius: 10px; 152 | border-color: rgb(58, 58, 58); 153 | border-style: inset; 154 | } 155 | 156 | QProgressBar::chunk { 157 | background-color: qlineargradient(spread:pad, x1:0.5, y1:0.7, x2:0.5, y2:0.3, stop:0 rgba(0, 200, 0, 255), stop:1 rgba(30, 230, 30, 255)); 158 | border-radius: 10px; 159 | } 160 | 161 | QMenuBar { 162 | background:rgb(0, 0, 0); 163 | color: rgb(255, 153, 0); 164 | } 165 | 166 | QMenuBar::item { 167 | spacing: 3px; 168 | padding: 1px 4px; 169 | background: transparent; 170 | } 171 | 172 | QMenuBar::item:selected { 173 | background:rgb(115, 115, 115); 174 | } 175 | 176 | QMenu { 177 | border-width: 2px; 178 | border-radius: 10px; 179 | border-color: rgb(255, 153, 0); 180 | border-style: outset; 181 | } 182 | 183 | QMenu::item { 184 | spacing: 3px; 185 | padding: 3px 15px; 186 | } 187 | 188 | QMenu::item:selected { 189 | spacing: 3px; 190 | padding: 3px 15px; 191 | background:rgb(115, 115, 115); 192 | color:rgb(255, 255, 255); 193 | border-width: 1px; 194 | border-radius: 10px; 195 | border-color: rgb(58, 58, 58); 196 | border-style: inset; 197 | } 198 | 199 | 200 | 201 | 202 | 203 | 204 | 0 205 | 0 206 | 801 207 | 581 208 | 209 | 210 | 211 | 0 212 | 213 | 214 | false 215 | 216 | 217 | false 218 | 219 | 220 | false 221 | 222 | 223 | 224 | Main 225 | 226 | 227 | 228 | 229 | 450 230 | 420 231 | 300 232 | 50 233 | 234 | 235 | 236 | New Image 237 | 238 | 239 | 240 | 241 | 242 | 450 243 | 50 244 | 300 245 | 300 246 | 247 | 248 | 249 | Add Image 250 | 251 | 252 | true 253 | 254 | 255 | 0 256 | 257 | 258 | 259 | 260 | 261 | 290 262 | 40 263 | 130 264 | 51 265 | 266 | 267 | 268 | Show Database 269 | 270 | 271 | 272 | 273 | false 274 | 275 | 276 | 277 | 20 278 | 40 279 | 250 280 | 51 281 | 282 | 283 | 284 | Reconaissance 285 | 286 | 287 | 288 | 289 | false 290 | 291 | 292 | 293 | 20 294 | 120 295 | 190 296 | 34 297 | 298 | 299 | 300 | Detection 301 | 302 | 303 | 304 | 305 | false 306 | 307 | 308 | 309 | 230 310 | 120 311 | 190 312 | 34 313 | 314 | 315 | 316 | Prétraitements 317 | 318 | 319 | 320 | 321 | false 322 | 323 | 324 | 325 | 20 326 | 170 327 | 90 328 | 35 329 | 330 | 331 | 332 | Visage 333 | 334 | 335 | 336 | 337 | false 338 | 339 | 340 | 341 | 120 342 | 170 343 | 90 344 | 35 345 | 346 | 347 | 348 | Nez 349 | 350 | 351 | 352 | 353 | false 354 | 355 | 356 | 357 | 120 358 | 210 359 | 90 360 | 35 361 | 362 | 363 | 364 | Bouche 365 | 366 | 367 | 368 | 369 | false 370 | 371 | 372 | 373 | 20 374 | 210 375 | 90 376 | 35 377 | 378 | 379 | 380 | Yeux 381 | 382 | 383 | 384 | 385 | false 386 | 387 | 388 | 389 | 330 390 | 210 391 | 90 392 | 35 393 | 394 | 395 | 396 | Denoising 397 | 398 | 399 | 400 | 401 | false 402 | 403 | 404 | 405 | 230 406 | 210 407 | 90 408 | 35 409 | 410 | 411 | 412 | Median 413 | 414 | 415 | 416 | 417 | false 418 | 419 | 420 | 421 | 330 422 | 170 423 | 90 424 | 35 425 | 426 | 427 | 428 | Egaliser 429 | 430 | 431 | 432 | 433 | false 434 | 435 | 436 | 437 | 230 438 | 170 439 | 90 440 | 35 441 | 442 | 443 | 444 | Normaliser 445 | 446 | 447 | 448 | 449 | false 450 | 451 | 452 | 453 | 230 454 | 280 455 | 190 456 | 34 457 | 458 | 459 | 460 | Miroir 461 | 462 | 463 | 464 | 465 | false 466 | 467 | 468 | 469 | 20 470 | 280 471 | 190 472 | 34 473 | 474 | 475 | 476 | Rotation 477 | 478 | 479 | 480 | 481 | 482 | 20 483 | 100 484 | 400 485 | 20 486 | 487 | 488 | 489 | Qt::Horizontal 490 | 491 | 492 | 493 | 494 | 495 | 20 496 | 250 497 | 400 498 | 20 499 | 500 | 501 | 502 | Qt::Horizontal 503 | 504 | 505 | 506 | 507 | 508 | 20 509 | 260 510 | 400 511 | 20 512 | 513 | 514 | 515 | Qt::Horizontal 516 | 517 | 518 | 519 | 520 | 521 | 20 522 | 90 523 | 400 524 | 20 525 | 526 | 527 | 528 | Qt::Horizontal 529 | 530 | 531 | 532 | 533 | 534 | 20 535 | 340 536 | 400 537 | 140 538 | 539 | 540 | 541 | Qlabel{ 542 | background: qlineargradient(spread:pad, x1:0, y1:1, x2:0, y2:0, stop:0 rgba(0, 0, 0, 255), stop:0.05 rgba(14, 8, 73, 255), stop:0.36 rgba(28, 17, 145, 255), stop:0.6 rgba(126, 14, 81, 255), stop:0.75 rgba(234, 11, 11, 255), stop:0.79 rgba(244, 70, 5, 255), stop:0.86 rgba(255, 136, 0, 255), stop:0.935 rgba(239, 236, 55, 255))} 543 | 544 | 545 | Histogramme 546 | 547 | 548 | 549 | 550 | 551 | true 552 | 553 | 554 | Report 555 | 556 | 557 | 558 | 559 | 560 | 561 | 562 | 0 563 | 0 564 | 800 565 | 18 566 | 567 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | -------------------------------------------------------------------------------- /ressources/Qss/light.css: -------------------------------------------------------------------------------- 1 | QPalette{background:#CFDDEE;}*{outline:0px;color:#324C6C;} 2 | 3 | QWidget[form="true"],QLabel[frameShape="1"]{ 4 | border:1px solid #7F9AB8; 5 | border-radius:0px; 6 | } 7 | 8 | QWidget[form="bottom"]{ 9 | background:#C0D3EB; 10 | } 11 | 12 | QWidget[form="bottom"] .QFrame{ 13 | border:1px solid #324C6C; 14 | } 15 | 16 | QWidget[form="bottom"] QLabel,QWidget[form="title"] QLabel{ 17 | border-radius:0px; 18 | color:#324C6C; 19 | background:none; 20 | border-style:none; 21 | } 22 | 23 | QWidget[form="title"],QWidget[nav="left"],QWidget[nav="top"] QAbstractButton{ 24 | border-style:none; 25 | border-radius:0px; 26 | padding:5px; 27 | color:#324C6C; 28 | background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #C0D3EB,stop:1 #BCCFE7); 29 | } 30 | 31 | QWidget[nav="top"] QAbstractButton:hover,QWidget[nav="top"] QAbstractButton:pressed,QWidget[nav="top"] QAbstractButton:checked{ 32 | border-style:solid; 33 | border-width:0px 0px 2px 0px; 34 | padding:4px 4px 2px 4px; 35 | border-color:#00BB9E; 36 | background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #D2E3F5,stop:1 #CADDF3); 37 | } 38 | 39 | QWidget[nav="left"] QAbstractButton{ 40 | border-radius:0px; 41 | color:#324C6C; 42 | background:none; 43 | border-style:none; 44 | } 45 | 46 | QWidget[nav="left"] QAbstractButton:hover{ 47 | color:#FFFFFF; 48 | background-color:#00BB9E; 49 | } 50 | 51 | QWidget[nav="left"] QAbstractButton:checked,QWidget[nav="left"] QAbstractButton:pressed{ 52 | color:#324C6C; 53 | border-style:solid; 54 | border-width:0px 0px 0px 2px; 55 | padding:4px 4px 4px 2px; 56 | border-color:#00BB9E; 57 | background-color:#CFDDEE; 58 | } 59 | 60 | QWidget[video="true"] QLabel{ 61 | color:#324C6C; 62 | border:1px solid #7F9AB8; 63 | background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #C0D3EB,stop:1 #BCCFE7); 64 | } 65 | 66 | QWidget[video="true"] QLabel:focus{ 67 | border:1px solid #00BB9E; 68 | background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #D2E3F5,stop:1 #CADDF3); 69 | } 70 | 71 | QLineEdit,QTextEdit,QPlainTextEdit,QSpinBox,QDoubleSpinBox,QComboBox,QDateEdit,QTimeEdit,QDateTimeEdit{ 72 | border:1px solid #7F9AB8; 73 | 74 | padding:2px; 75 | background:none; 76 | selection-background-color:#C0D3EB; 77 | selection-color:#324C6C; 78 | } 79 | 80 | QLineEdit:focus,QTextEdit:focus,QPlainTextEdit:focus,QSpinBox:focus,QDoubleSpinBox:focus,QComboBox:focus,QDateEdit:focus,QTimeEdit:focus,QDateTimeEdit:focus,QLineEdit:hover,QTextEdit:hover,QPlainTextEdit:hover,QSpinBox:hover,QDoubleSpinBox:hover,QComboBox:hover,QDateEdit:hover,QTimeEdit:hover,QDateTimeEdit:hover{ 81 | border:1px solid #7F9AB8; 82 | } 83 | 84 | QLineEdit[echoMode="2"]{ 85 | lineedit-password-character:9679; 86 | } 87 | 88 | .QFrame{ 89 | border:1px solid #7F9AB8; 90 | 91 | } 92 | 93 | .QGroupBox{ 94 | border:1px solid #7F9AB8; 95 | 96 | margin-top:3ex; 97 | } 98 | 99 | .QGroupBox::title{ 100 | subcontrol-origin:margin; 101 | position:relative; 102 | left:10px; 103 | } 104 | 105 | .QPushButton,.QToolButton{ 106 | border-style:none; 107 | border:1px solid #7F9AB8; 108 | color:#324C6C; 109 | padding:5px; 110 | min-height:15px; 111 | 112 | background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #C0D3EB,stop:1 #BCCFE7); 113 | } 114 | QPushButton{ 115 | margin-top: 3px; 116 | padding-top:3px; 117 | 118 | 119 | outline: none; 120 | /* Issue #194 - Special case of QPushButton inside dialogs, for better UI */ 121 | min-width: 80px; 122 | } 123 | .QPushButton:hover,.QToolButton:hover{ 124 | background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #D2E3F5,stop:1 #CADDF3); 125 | 126 | } 127 | 128 | .QPushButton:pressed,.QToolButton:pressed{ 129 | background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #C0D3EB,stop:1 #BCCFE7); 130 | } 131 | 132 | .QToolButton::menu-indicator{ 133 | image:None; 134 | } 135 | 136 | QToolButton#btnMenu,QPushButton#btnMenu_Min,QPushButton#btnMenu_Max,QPushButton#btnMenu_Close{ 137 | 138 | color:#324C6C; 139 | padding:3px; 140 | margin:0px; 141 | background:none; 142 | border-style:none; 143 | } 144 | 145 | QToolButton#btnMenu:hover,QPushButton#btnMenu_Min:hover,QPushButton#btnMenu_Max:hover{ 146 | color:#FFFFFF; 147 | margin:1px 1px 2px 1px; 148 | background-color:rgba(51,127,209,230); 149 | padding: 3px; 150 | } 151 | 152 | QPushButton#btnMenu_Close:hover{ 153 | color:#FFFFFF; 154 | margin:1px 1px 2px 1px; 155 | background-color:rgba(238,0,0,128); 156 | } 157 | 158 | QRadioButton::indicator{ 159 | width:15px; 160 | height:15px; 161 | } 162 | 163 | QRadioButton::indicator::unchecked{ 164 | image:url(:/qss/blue/radiobutton_unchecked.png); 165 | } 166 | 167 | QRadioButton::indicator::unchecked:disabled{ 168 | image:url(:/qss/blue/radiobutton_unchecked_disable.png); 169 | } 170 | 171 | QRadioButton::indicator::checked{ 172 | image:url(:/qss/blue/radiobutton_checked.png); 173 | } 174 | 175 | QRadioButton::indicator::checked:disabled{ 176 | image:url(:/qss/blue/radiobutton_checked_disable.png); 177 | } 178 | 179 | QGroupBox::indicator,QTreeWidget::indicator,QListWidget::indicator{ 180 | padding:0px -3px 0px 3px; 181 | } 182 | 183 | QCheckBox::indicator,QGroupBox::indicator,QTreeWidget::indicator,QListWidget::indicator{ 184 | width:13px; 185 | height:13px; 186 | } 187 | 188 | QCheckBox::indicator:unchecked,QGroupBox::indicator:unchecked,QTreeWidget::indicator:unchecked,QListWidget::indicator:unchecked{ 189 | image:url(:/qss/blue/checkbox_unchecked.png); 190 | } 191 | 192 | QCheckBox::indicator:unchecked:disabled,QGroupBox::indicator:unchecked:disabled,QTreeWidget::indicator:unchecked:disabled,QListWidget::indicator:disabled{ 193 | image:url(:/qss/blue/checkbox_unchecked_disable.png); 194 | } 195 | 196 | QCheckBox::indicator:checked,QGroupBox::indicator:checked,QTreeWidget::indicator:checked,QListWidget::indicator:checked{ 197 | image:url(:/qss/blue/checkbox_checked.png); 198 | } 199 | 200 | QCheckBox::indicator:checked:disabled,QGroupBox::indicator:checked:disabled,QTreeWidget::indicator:checked:disabled,QListWidget::indicator:checked:disabled{ 201 | image:url(:/qss/blue/checkbox_checked_disable.png); 202 | } 203 | 204 | QCheckBox::indicator:indeterminate,QGroupBox::indicator:indeterminate,QTreeWidget::indicator:indeterminate,QListWidget::indicator:indeterminate{ 205 | image:url(:/qss/blue/checkbox_parcial.png); 206 | } 207 | 208 | QCheckBox::indicator:indeterminate:disabled,QGroupBox::indicator:indeterminate:disabled,QTreeWidget::indicator:indeterminate:disabled,QListWidget::indicator:indeterminate:disabled{ 209 | image:url(:/qss/blue/checkbox_parcial_disable.png); 210 | } 211 | 212 | QTimeEdit::up-button,QDateEdit::up-button,QDateTimeEdit::up-button,QDoubleSpinBox::up-button,QSpinBox::up-button{ 213 | image:url(:/qss/blue/add_top.png); 214 | width:10px; 215 | height:10px; 216 | padding:2px 5px 0px 0px; 217 | } 218 | 219 | QTimeEdit::down-button,QDateEdit::down-button,QDateTimeEdit::down-button,QDoubleSpinBox::down-button,QSpinBox::down-button{ 220 | image:url(:/qss/blue/add_bottom.png); 221 | width:10px; 222 | height:10px; 223 | padding:0px 5px 2px 0px; 224 | } 225 | 226 | QTimeEdit::up-button:pressed,QDateEdit::up-button:pressed,QDateTimeEdit::up-button:pressed,QDoubleSpinBox::up-button:pressed,QSpinBox::up-button:pressed{ 227 | top:-2px; 228 | } 229 | 230 | QTimeEdit::down-button:pressed,QDateEdit::down-button:pressed,QDateTimeEdit::down-button:pressed,QDoubleSpinBox::down-button:pressed,QSpinBox::down-button:pressed,QSpinBox::down-button:pressed{ 231 | bottom:-2px; 232 | } 233 | 234 | QComboBox::down-arrow,QDateEdit[calendarPopup="true"]::down-arrow,QTimeEdit[calendarPopup="true"]::down-arrow,QDateTimeEdit[calendarPopup="true"]::down-arrow{ 235 | image:url(:/qss/blue/add_bottom.png); 236 | width:10px; 237 | height:10px; 238 | right:2px; 239 | } 240 | 241 | QComboBox::drop-down,QDateEdit::drop-down,QTimeEdit::drop-down,QDateTimeEdit::drop-down{ 242 | subcontrol-origin:padding; 243 | subcontrol-position:top right; 244 | width:15px; 245 | border-left-width:0px; 246 | border-left-style:solid; 247 | 248 | 249 | border-left-color:#7F9AB8; 250 | } 251 | 252 | QComboBox::drop-down:on{ 253 | top:1px; 254 | } 255 | 256 | QMenuBar::item{ 257 | color:#324C6C; 258 | background-color:#C0D3EB; 259 | margin:0px; 260 | padding:3px 10px; 261 | } 262 | 263 | QMenu,QMenuBar,QMenu:disabled,QMenuBar:disabled{ 264 | color:#324C6C; 265 | background-color:#C0D3EB; 266 | border:1px solid #7F9AB8; 267 | margin:0px; 268 | } 269 | 270 | QMenu::item{ 271 | padding:3px 20px; 272 | } 273 | 274 | QMenu::indicator{ 275 | width:13px; 276 | height:13px; 277 | } 278 | 279 | QMenu::item:selected,QMenuBar::item:selected{ 280 | color:#324C6C; 281 | border:0px solid #7F9AB8; 282 | background:#D2E3F5; 283 | } 284 | 285 | QMenu::separator{ 286 | height:1px; 287 | background:#7F9AB8; 288 | } 289 | 290 | QProgressBar{ 291 | min-height:10px; 292 | background:#C0D3EB; 293 | 294 | text-align:center; 295 | border:1px solid #C0D3EB; 296 | } 297 | 298 | QProgressBar:chunk{ 299 | 300 | background-color:#7F9AB8; 301 | } 302 | 303 | QSlider::groove:horizontal{ 304 | background:#C0D3EB; 305 | height:8px; 306 | 307 | } 308 | 309 | QSlider::add-page:horizontal{ 310 | background:#C0D3EB; 311 | height:8px; 312 | 313 | } 314 | 315 | QSlider::sub-page:horizontal{ 316 | background:#7F9AB8; 317 | height:8px; 318 | 319 | } 320 | 321 | QSlider::handle:horizontal{ 322 | width:13px; 323 | margin-top:-3px; 324 | margin-bottom:-3px; 325 | 326 | background:qradialgradient(spread:pad,cx:0.5,cy:0.5,radius:0.5,fx:0.5,fy:0.5,stop:0.6 #CFDDEE,stop:0.8 #7F9AB8); 327 | } 328 | 329 | QSlider::groove:vertical{ 330 | width:8px; 331 | 332 | background:#C0D3EB; 333 | } 334 | 335 | QSlider::add-page:vertical{ 336 | width:8px; 337 | 338 | background:#C0D3EB; 339 | } 340 | 341 | QSlider::sub-page:vertical{ 342 | width:8px; 343 | 344 | background:#7F9AB8; 345 | } 346 | 347 | QSlider::handle:vertical{ 348 | height:14px; 349 | margin-left:-3px; 350 | margin-right:-3px; 351 | 352 | background:qradialgradient(spread:pad,cx:0.5,cy:0.5,radius:0.5,fx:0.5,fy:0.5,stop:0.6 #CFDDEE,stop:0.8 #7F9AB8); 353 | } 354 | 355 | QScrollBar:horizontal{ 356 | background:#C0D3EB; 357 | padding:0px; 358 | 359 | max-height:12px; 360 | } 361 | 362 | QScrollBar::handle:horizontal{ 363 | background:#CADDF3; 364 | min-width:50px; 365 | 366 | } 367 | 368 | QScrollBar::handle:horizontal:hover{ 369 | background:#7F9AB8; 370 | } 371 | 372 | QScrollBar::handle:horizontal:pressed{ 373 | background:#7F9AB8; 374 | } 375 | 376 | QScrollBar::add-page:horizontal{ 377 | background:none; 378 | } 379 | 380 | QScrollBar::sub-page:horizontal{ 381 | background:none; 382 | } 383 | 384 | QScrollBar::add-line:horizontal{ 385 | background:none; 386 | } 387 | 388 | QScrollBar::sub-line:horizontal{ 389 | background:none; 390 | } 391 | 392 | QScrollBar:vertical{ 393 | background:#C0D3EB; 394 | padding:0px; 395 | 396 | 397 | max-width:12px; 398 | } 399 | 400 | QScrollBar::handle:vertical{ 401 | background:#CADDF3; 402 | min-height:50px; 403 | 404 | } 405 | 406 | QScrollBar::handle:vertical:hover{ 407 | background:#7F9AB8; 408 | } 409 | 410 | QScrollBar::handle:vertical:pressed{ 411 | background:#7F9AB8; 412 | } 413 | 414 | QScrollBar::add-page:vertical{ 415 | background:none; 416 | } 417 | 418 | QScrollBar::sub-page:vertical{ 419 | background:none; 420 | } 421 | 422 | QScrollBar::add-line:vertical{ 423 | background:none; 424 | } 425 | 426 | QScrollBar::sub-line:vertical{ 427 | background:none; 428 | } 429 | 430 | QScrollArea{ 431 | border:0px; 432 | } 433 | 434 | QTreeView,QListView,QTableView,QTabWidget::pane{ 435 | border:1px solid #7F9AB8; 436 | selection-background-color:#D2E3F5; 437 | selection-color:#324C6C; 438 | alternate-background-color:#CADDF3; 439 | gridline-color:#7F9AB8; 440 | } 441 | 442 | QTreeView::branch:closed:has-children{ 443 | margin:4px; 444 | border-image:url(:/qss/blue/branch_open.png); 445 | } 446 | 447 | QTreeView::branch:open:has-children{ 448 | margin:4px; 449 | border-image:url(:/qss/blue/branch_close.png); 450 | } 451 | 452 | QTreeView,QListView,QTableView,QSplitter::handle,QTreeView::branch{ 453 | background:#CFDDEE; 454 | } 455 | 456 | QTableView::item:selected,QListView::item:selected,QTreeView::item:selected{ 457 | color:#324C6C; 458 | background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #C0D3EB,stop:1 #BCCFE7); 459 | } 460 | 461 | QTableView::item:hover,QListView::item:hover,QTreeView::item:hover{ 462 | color:#324C6C; 463 | background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #D2E3F5,stop:1 #CADDF3); 464 | } 465 | 466 | QTableView::item,QListView::item,QTreeView::item{ 467 | padding:1px; 468 | margin:0px; 469 | } 470 | 471 | QHeaderView::section,QTableCornerButton:section{ 472 | padding:3px; 473 | margin:0px; 474 | color:#324C6C; 475 | border:1px solid #7F9AB8; 476 | border-left-width:0px; 477 | border-right-width:1px; 478 | border-top-width:0px; 479 | border-bottom-width:1px; 480 | background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #D2E3F5,stop:1 #CADDF3); 481 | } 482 | 483 | QTabBar::tab{ 484 | border:1px solid #7F9AB8; 485 | color:#324C6C; 486 | margin:0px; 487 | background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #D2E3F5,stop:1 #CADDF3); 488 | } 489 | 490 | QTabBar::tab:selected,QTabBar::tab:hover{ 491 | border-style:solid; 492 | border-color:#00BB9E; 493 | background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #C0D3EB,stop:1 #BCCFE7); 494 | } 495 | 496 | QTabBar::tab:top,QTabBar::tab:bottom{ 497 | padding:3px 8px 3px 8px; 498 | } 499 | 500 | QTabBar::tab:left,QTabBar::tab:right{ 501 | padding:8px 3px 8px 3px; 502 | } 503 | 504 | QTabBar::tab:top:selected,QTabBar::tab:top:hover{ 505 | border-width:2px 0px 0px 0px; 506 | } 507 | 508 | QTabBar::tab:right:selected,QTabBar::tab:right:hover{ 509 | border-width:0px 0px 0px 2px; 510 | } 511 | 512 | QTabBar::tab:bottom:selected,QTabBar::tab:bottom:hover{ 513 | border-width:0px 0px 2px 0px; 514 | } 515 | 516 | QTabBar::tab:left:selected,QTabBar::tab:left:hover{ 517 | border-width:0px 2px 0px 0px; 518 | } 519 | 520 | QTabBar::tab:first:top:selected,QTabBar::tab:first:top:hover,QTabBar::tab:first:bottom:selected,QTabBar::tab:first:bottom:hover{ 521 | border-left-width:1px; 522 | border-left-color:#7F9AB8; 523 | } 524 | 525 | QTabBar::tab:first:left:selected,QTabBar::tab:first:left:hover,QTabBar::tab:first:right:selected,QTabBar::tab:first:right:hover{ 526 | border-top-width:1px; 527 | border-top-color:#7F9AB8; 528 | } 529 | 530 | QTabBar::tab:last:top:selected,QTabBar::tab:last:top:hover,QTabBar::tab:last:bottom:selected,QTabBar::tab:last:bottom:hover{ 531 | border-right-width:1px; 532 | border-right-color:#7F9AB8; 533 | } 534 | 535 | QTabBar::tab:last:left:selected,QTabBar::tab:last:left:hover,QTabBar::tab:last:right:selected,QTabBar::tab:last:right:hover{ 536 | border-bottom-width:1px; 537 | border-bottom-color:#7F9AB8; 538 | } 539 | 540 | QStatusBar::item{ 541 | border:0px solid #C0D3EB; 542 | 543 | } 544 | 545 | QToolBox::tab,QGroupBox#gboxDevicePanel,QGroupBox#gboxDeviceTitle,QFrame#gboxDevicePanel,QFrame#gboxDeviceTitle{ 546 | padding:3px; 547 | 548 | color:#324C6C; 549 | background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #C0D3EB,stop:1 #BCCFE7); 550 | } 551 | 552 | QToolTip{ 553 | border:0px solid #324C6C; 554 | padding:1px; 555 | color:#324C6C; 556 | background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #C0D3EB,stop:1 #BCCFE7); 557 | } 558 | 559 | QToolBox::tab:selected{ 560 | background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #D2E3F5,stop:1 #CADDF3); 561 | } 562 | 563 | QPrintPreviewDialog QToolButton{ 564 | border:0px solid #324C6C; 565 | border-radius:0px; 566 | margin:0px; 567 | padding:3px; 568 | background:none; 569 | } 570 | 571 | QColorDialog QPushButton,QFileDialog QPushButton{ 572 | min-width:80px; 573 | padding: 3px; 574 | } 575 | 576 | QToolButton#qt_calendar_prevmonth{ 577 | icon-size:0px; 578 | min-width:20px; 579 | image:url(:/qss/blue/calendar_prevmonth.png); 580 | } 581 | 582 | QToolButton#qt_calendar_nextmonth{ 583 | icon-size:0px; 584 | min-width:20px; 585 | image:url(:/qss/blue/calendar_nextmonth.png); 586 | } 587 | 588 | QToolButton#qt_calendar_prevmonth,QToolButton#qt_calendar_nextmonth,QToolButton#qt_calendar_monthbutton,QToolButton#qt_calendar_yearbutton{ 589 | border:0px solid #324C6C; 590 | 591 | margin:3px 3px 3px 3px; 592 | padding:3px; 593 | background:none; 594 | } 595 | 596 | QToolButton#qt_calendar_prevmonth:hover,QToolButton#qt_calendar_nextmonth:hover,QToolButton#qt_calendar_monthbutton:hover,QToolButton#qt_calendar_yearbutton:hover,QToolButton#qt_calendar_prevmonth:pressed,QToolButton#qt_calendar_nextmonth:pressed,QToolButton#qt_calendar_monthbutton:pressed,QToolButton#qt_calendar_yearbutton:pressed{ 597 | border:1px solid #7F9AB8; 598 | } 599 | 600 | QCalendarWidget QSpinBox#qt_calendar_yearedit{ 601 | margin:2px; 602 | } 603 | 604 | QCalendarWidget QToolButton::menu-indicator{ 605 | image:None; 606 | } 607 | 608 | QCalendarWidget QTableView{ 609 | border-width:0px; 610 | } 611 | 612 | QCalendarWidget QWidget#qt_calendar_navigationbar{ 613 | border:1px solid #7F9AB8; 614 | border-width:1px 1px 0px 1px; 615 | background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #C0D3EB,stop:1 #BCCFE7); 616 | } 617 | 618 | QComboBox QAbstractItemView::item{ 619 | min-height:20px; 620 | min-width:10px; 621 | } 622 | 623 | QTableView[model="true"]::item{ 624 | padding:0px; 625 | margin:0px; 626 | } 627 | 628 | QTableView QLineEdit,QTableView QComboBox,QTableView QSpinBox,QTableView QDoubleSpinBox,QTableView QDateEdit,QTableView QTimeEdit,QTableView QDateTimeEdit{ 629 | border-width:0px; 630 | border-radius:0px; 631 | } 632 | 633 | QTableView QLineEdit:focus,QTableView QComboBox:focus,QTableView QSpinBox:focus,QTableView QDoubleSpinBox:focus,QTableView QDateEdit:focus,QTableView QTimeEdit:focus,QTableView QDateTimeEdit:focus{ 634 | border-width:0px; 635 | border-radius:0px; 636 | } 637 | 638 | QLineEdit,QTextEdit,QPlainTextEdit,QSpinBox,QDoubleSpinBox,QComboBox,QDateEdit,QTimeEdit,QDateTimeEdit{ 639 | background:#CFDDEE; 640 | } 641 | 642 | *:disabled{ 643 | background:#CFDDEE; 644 | border-color:#C0D3EB; 645 | } 646 | 647 | /*TextColor:#324C6C*/ 648 | /*PanelColor:#CFDDEE*/ 649 | /*BorderColor:#7F9AB8*/ 650 | /*NormalColorStart:#C0D3EB*/ 651 | /*NormalColorEnd:#BCCFE7*/ 652 | /*DarkColorStart:#D2E3F5*/ 653 | /*DarkColorEnd:#CADDF3*/ 654 | /*HighColor:#00BB9E*/ -------------------------------------------------------------------------------- /ressources/ui/ElegantDark.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWindow 4 | 5 | 6 | 7 | 0 8 | 0 9 | 800 10 | 600 11 | 12 | 13 | 14 | MainWindow 15 | 16 | 17 | /* 18 | ElegantDark Style Sheet for QT Applications 19 | Author: Jaime A. Quiroga P. 20 | Company: GTRONICK 21 | Last updated: 17/04/2018 22 | Available at: https://github.com/GTRONICK/QSS/blob/master/ElegantDark.qss 23 | */ 24 | * { 25 | background-color:rgb(82, 82, 82); 26 | } 27 | QTextEdit { 28 | background-color:rgb(42, 42, 42); 29 | color: rgb(0, 255, 0); 30 | } 31 | QPushButton{ 32 | border-style: outset; 33 | border-width: 2px; 34 | border-top-color: qlineargradient(spread:pad, x1:0.5, y1:0.6, x2:0.5, y2:0.4, stop:0 rgba(115, 115, 115, 255), stop:1 rgba(62, 62, 62, 255)); 35 | border-right-color: qlineargradient(spread:pad, x1:0.4, y1:0.5, x2:0.6, y2:0.5, stop:0 rgba(115, 115, 115, 255), stop:1 rgba(62, 62, 62, 255)); 36 | border-left-color: qlineargradient(spread:pad, x1:0.6, y1:0.5, x2:0.4, y2:0.5, stop:0 rgba(115, 115, 115, 255), stop:1 rgba(62, 62, 62, 255)); 37 | border-bottom-color: rgb(58, 58, 58); 38 | border-bottom-width: 1px; 39 | border-style: solid; 40 | color: rgb(255, 255, 255); 41 | padding: 2px; 42 | background-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(77, 77, 77, 255), stop:1 rgba(97, 97, 97, 255)); 43 | } 44 | QPushButton:hover{ 45 | border-style: outset; 46 | border-width: 2px; 47 | border-top-color: qlineargradient(spread:pad, x1:0.5, y1:0.6, x2:0.5, y2:0.4, stop:0 rgba(180, 180, 180, 255), stop:1 rgba(110, 110, 110, 255)); 48 | border-right-color: qlineargradient(spread:pad, x1:0.4, y1:0.5, x2:0.6, y2:0.5, stop:0 rgba(180, 180, 180, 255), stop:1 rgba(110, 110, 110, 255)); 49 | border-left-color: qlineargradient(spread:pad, x1:0.6, y1:0.5, x2:0.4, y2:0.5, stop:0 rgba(180, 180, 180, 255), stop:1 rgba(110, 110, 110, 255)); 50 | border-bottom-color: rgb(115, 115, 115); 51 | border-bottom-width: 1px; 52 | border-style: solid; 53 | color: rgb(255, 255, 255); 54 | padding: 2px; 55 | background-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(107, 107, 107, 255), stop:1 rgba(157, 157, 157, 255)); 56 | } 57 | QPushButton:pressed{ 58 | border-style: outset; 59 | border-width: 2px; 60 | border-top-color: qlineargradient(spread:pad, x1:0.5, y1:0.6, x2:0.5, y2:0.4, stop:0 rgba(62, 62, 62, 255), stop:1 rgba(22, 22, 22, 255)); 61 | border-right-color: qlineargradient(spread:pad, x1:0.4, y1:0.5, x2:0.6, y2:0.5, stop:0 rgba(115, 115, 115, 255), stop:1 rgba(62, 62, 62, 255)); 62 | border-left-color: qlineargradient(spread:pad, x1:0.6, y1:0.5, x2:0.4, y2:0.5, stop:0 rgba(115, 115, 115, 255), stop:1 rgba(62, 62, 62, 255)); 63 | border-bottom-color: rgb(58, 58, 58); 64 | border-bottom-width: 1px; 65 | border-style: solid; 66 | color: rgb(255, 255, 255); 67 | padding: 2px; 68 | background-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(77, 77, 77, 255), stop:1 rgba(97, 97, 97, 255)); 69 | } 70 | QPushButton:disabled{ 71 | border-style: outset; 72 | border-width: 2px; 73 | border-top-color: qlineargradient(spread:pad, x1:0.5, y1:0.6, x2:0.5, y2:0.4, stop:0 rgba(115, 115, 115, 255), stop:1 rgba(62, 62, 62, 255)); 74 | border-right-color: qlineargradient(spread:pad, x1:0.4, y1:0.5, x2:0.6, y2:0.5, stop:0 rgba(115, 115, 115, 255), stop:1 rgba(62, 62, 62, 255)); 75 | border-left-color: qlineargradient(spread:pad, x1:0.6, y1:0.5, x2:0.4, y2:0.5, stop:0 rgba(115, 115, 115, 255), stop:1 rgba(62, 62, 62, 255)); 76 | border-bottom-color: rgb(58, 58, 58); 77 | border-bottom-width: 1px; 78 | border-style: solid; 79 | color: rgb(0, 0, 0); 80 | padding: 2px; 81 | background-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(57, 57, 57, 255), stop:1 rgba(77, 77, 77, 255)); 82 | } 83 | QLineEdit { 84 | border-width: 1px; border-radius: 4px; 85 | border-color: rgb(58, 58, 58); 86 | border-style: inset; 87 | padding: 0 8px; 88 | color: rgb(255, 255, 255); 89 | background:rgb(100, 100, 100); 90 | selection-background-color: rgb(187, 187, 187); 91 | selection-color: rgb(60, 63, 65); 92 | } 93 | QLabel { 94 | color:rgb(255,255,255); 95 | } 96 | QProgressBar { 97 | text-align: center; 98 | color: rgb(240, 240, 240); 99 | border-width: 1px; 100 | border-radius: 10px; 101 | border-color: rgb(58, 58, 58); 102 | border-style: inset; 103 | background-color:rgb(77,77,77); 104 | } 105 | QProgressBar::chunk { 106 | background-color: qlineargradient(spread:pad, x1:0.5, y1:0.7, x2:0.5, y2:0.3, stop:0 rgba(87, 97, 106, 255), stop:1 rgba(93, 103, 113, 255)); 107 | border-radius: 5px; 108 | } 109 | QMenuBar { 110 | background:rgb(82, 82, 82); 111 | } 112 | QMenuBar::item { 113 | color:rgb(223,219,210); 114 | spacing: 3px; 115 | padding: 1px 4px; 116 | background: transparent; 117 | } 118 | 119 | QMenuBar::item:selected { 120 | background:rgb(115, 115, 115); 121 | } 122 | QMenu::item:selected { 123 | color:rgb(255,255,255); 124 | border-width:2px; 125 | border-style:solid; 126 | padding-left:18px; 127 | padding-right:8px; 128 | padding-top:2px; 129 | padding-bottom:3px; 130 | background:qlineargradient(spread:pad, x1:0.5, y1:0.7, x2:0.5, y2:0.3, stop:0 rgba(87, 97, 106, 255), stop:1 rgba(93, 103, 113, 255)); 131 | border-top-color: qlineargradient(spread:pad, x1:0.5, y1:0.6, x2:0.5, y2:0.4, stop:0 rgba(115, 115, 115, 255), stop:1 rgba(62, 62, 62, 255)); 132 | border-right-color: qlineargradient(spread:pad, x1:0.4, y1:0.5, x2:0.6, y2:0.5, stop:0 rgba(115, 115, 115, 255), stop:1 rgba(62, 62, 62, 255)); 133 | border-left-color: qlineargradient(spread:pad, x1:0.6, y1:0.5, x2:0.4, y2:0.5, stop:0 rgba(115, 115, 115, 255), stop:1 rgba(62, 62, 62, 255)); 134 | border-bottom-color: rgb(58, 58, 58); 135 | border-bottom-width: 1px; 136 | } 137 | QMenu::item { 138 | color:rgb(223,219,210); 139 | background-color:rgb(78,78,78); 140 | padding-left:20px; 141 | padding-top:4px; 142 | padding-bottom:4px; 143 | padding-right:10px; 144 | } 145 | QMenu{ 146 | background-color:rgb(78,78,78); 147 | } 148 | QTabWidget { 149 | color:rgb(0,0,0); 150 | background-color:rgb(247,246,246); 151 | } 152 | QTabWidget::pane { 153 | border-color: rgb(77,77,77); 154 | background-color:rgb(101,101,101); 155 | border-style: solid; 156 | border-width: 1px; 157 | border-radius: 6px; 158 | } 159 | QTabBar::tab { 160 | padding:2px; 161 | color:rgb(250,250,250); 162 | background-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(77, 77, 77, 255), stop:1 rgba(97, 97, 97, 255)); 163 | border-style: solid; 164 | border-width: 2px; 165 | border-top-right-radius:4px; 166 | border-top-left-radius:4px; 167 | border-top-color: qlineargradient(spread:pad, x1:0.5, y1:0.6, x2:0.5, y2:0.4, stop:0 rgba(115, 115, 115, 255), stop:1 rgba(95, 92, 93, 255)); 168 | border-right-color: qlineargradient(spread:pad, x1:0.4, y1:0.5, x2:0.6, y2:0.5, stop:0 rgba(115, 115, 115, 255), stop:1 rgba(95, 92, 93, 255)); 169 | border-left-color: qlineargradient(spread:pad, x1:0.6, y1:0.5, x2:0.4, y2:0.5, stop:0 rgba(115, 115, 115, 255), stop:1 rgba(95, 92, 93, 255)); 170 | border-bottom-color: rgb(101,101,101); 171 | } 172 | QTabBar::tab:selected, QTabBar::tab:last:selected, QTabBar::tab:hover { 173 | background-color:rgb(101,101,101); 174 | margin-left: 0px; 175 | margin-right: 1px; 176 | } 177 | QTabBar::tab:!selected { 178 | margin-top: 1px; 179 | margin-right: 1px; 180 | } 181 | QCheckBox { 182 | color:rgb(223,219,210); 183 | padding: 2px; 184 | } 185 | QCheckBox:hover { 186 | border-radius:4px; 187 | border-style:solid; 188 | padding-left: 1px; 189 | padding-right: 1px; 190 | padding-bottom: 1px; 191 | padding-top: 1px; 192 | border-width:1px; 193 | border-color: rgb(87, 97, 106); 194 | background-color:qlineargradient(spread:pad, x1:0.5, y1:0.7, x2:0.5, y2:0.3, stop:0 rgba(87, 97, 106, 150), stop:1 rgba(93, 103, 113, 150)); 195 | } 196 | QCheckBox::indicator:checked { 197 | border-radius:4px; 198 | border-style:solid; 199 | border-width:1px; 200 | border-color: rgb(180,180,180); 201 | background-color:qlineargradient(spread:pad, x1:0.5, y1:0.7, x2:0.5, y2:0.3, stop:0 rgba(87, 97, 106, 255), stop:1 rgba(93, 103, 113, 255)); 202 | } 203 | QCheckBox::indicator:unchecked { 204 | border-radius:4px; 205 | border-style:solid; 206 | border-width:1px; 207 | border-color: rgb(87, 97, 106); 208 | background-color:rgb(255,255,255); 209 | } 210 | QStatusBar { 211 | color:rgb(240,240,240); 212 | } 213 | 214 | 215 | 216 | 217 | 218 | 0 219 | 0 220 | 801 221 | 581 222 | 223 | 224 | 225 | 0 226 | 227 | 228 | false 229 | 230 | 231 | false 232 | 233 | 234 | false 235 | 236 | 237 | 238 | Main 239 | 240 | 241 | 242 | 243 | 450 244 | 420 245 | 300 246 | 50 247 | 248 | 249 | 250 | New Image 251 | 252 | 253 | 254 | 255 | 256 | 450 257 | 50 258 | 300 259 | 300 260 | 261 | 262 | 263 | Add Image 264 | 265 | 266 | true 267 | 268 | 269 | 0 270 | 271 | 272 | 273 | 274 | 275 | 290 276 | 40 277 | 130 278 | 51 279 | 280 | 281 | 282 | Show Database 283 | 284 | 285 | 286 | 287 | false 288 | 289 | 290 | 291 | 20 292 | 40 293 | 250 294 | 51 295 | 296 | 297 | 298 | Reconaissance 299 | 300 | 301 | 302 | 303 | false 304 | 305 | 306 | 307 | 20 308 | 120 309 | 190 310 | 34 311 | 312 | 313 | 314 | Detection 315 | 316 | 317 | 318 | 319 | false 320 | 321 | 322 | 323 | 230 324 | 120 325 | 190 326 | 34 327 | 328 | 329 | 330 | Prétraitements 331 | 332 | 333 | 334 | 335 | false 336 | 337 | 338 | 339 | 20 340 | 170 341 | 90 342 | 35 343 | 344 | 345 | 346 | Visage 347 | 348 | 349 | 350 | 351 | false 352 | 353 | 354 | 355 | 120 356 | 170 357 | 90 358 | 35 359 | 360 | 361 | 362 | Nez 363 | 364 | 365 | 366 | 367 | false 368 | 369 | 370 | 371 | 120 372 | 210 373 | 90 374 | 35 375 | 376 | 377 | 378 | Bouche 379 | 380 | 381 | 382 | 383 | false 384 | 385 | 386 | 387 | 20 388 | 210 389 | 90 390 | 35 391 | 392 | 393 | 394 | Yeux 395 | 396 | 397 | 398 | 399 | false 400 | 401 | 402 | 403 | 330 404 | 210 405 | 90 406 | 35 407 | 408 | 409 | 410 | Denoising 411 | 412 | 413 | 414 | 415 | false 416 | 417 | 418 | 419 | 230 420 | 210 421 | 90 422 | 35 423 | 424 | 425 | 426 | Median 427 | 428 | 429 | 430 | 431 | false 432 | 433 | 434 | 435 | 330 436 | 170 437 | 90 438 | 35 439 | 440 | 441 | 442 | Egaliser 443 | 444 | 445 | 446 | 447 | false 448 | 449 | 450 | 451 | 230 452 | 170 453 | 90 454 | 35 455 | 456 | 457 | 458 | Normaliser 459 | 460 | 461 | 462 | 463 | false 464 | 465 | 466 | 467 | 230 468 | 280 469 | 190 470 | 34 471 | 472 | 473 | 474 | Miroir 475 | 476 | 477 | 478 | 479 | false 480 | 481 | 482 | 483 | 20 484 | 280 485 | 190 486 | 34 487 | 488 | 489 | 490 | Rotation 491 | 492 | 493 | 494 | 495 | 496 | 20 497 | 100 498 | 400 499 | 20 500 | 501 | 502 | 503 | Qt::Horizontal 504 | 505 | 506 | 507 | 508 | 509 | 20 510 | 250 511 | 400 512 | 20 513 | 514 | 515 | 516 | Qt::Horizontal 517 | 518 | 519 | 520 | 521 | 522 | 20 523 | 260 524 | 400 525 | 20 526 | 527 | 528 | 529 | Qt::Horizontal 530 | 531 | 532 | 533 | 534 | 535 | 20 536 | 90 537 | 400 538 | 20 539 | 540 | 541 | 542 | Qt::Horizontal 543 | 544 | 545 | 546 | 547 | 548 | 20 549 | 340 550 | 400 551 | 140 552 | 553 | 554 | 555 | Qlabel{ 556 | background: qlineargradient(spread:pad, x1:0, y1:1, x2:0, y2:0, stop:0 rgba(0, 0, 0, 255), stop:0.05 rgba(14, 8, 73, 255), stop:0.36 rgba(28, 17, 145, 255), stop:0.6 rgba(126, 14, 81, 255), stop:0.75 rgba(234, 11, 11, 255), stop:0.79 rgba(244, 70, 5, 255), stop:0.86 rgba(255, 136, 0, 255), stop:0.935 rgba(239, 236, 55, 255))} 557 | 558 | 559 | Histogramme 560 | 561 | 562 | 563 | 564 | 565 | true 566 | 567 | 568 | Report 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | 0 577 | 0 578 | 800 579 | 18 580 | 581 | 582 | 583 | 584 | 585 | 586 | 587 | 588 | -------------------------------------------------------------------------------- /ressources/ui/materialDark.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWindow 4 | 5 | 6 | 7 | 0 8 | 0 9 | 800 10 | 600 11 | 12 | 13 | 14 | MainWindow 15 | 16 | 17 | *{ 18 | background-color:#1e1d23;} 19 | QMainWindow { 20 | background-color:#1e1d23; 21 | } 22 | QDialog { 23 | background-color:#1e1d23; 24 | } 25 | QColorDialog { 26 | background-color:#1e1d23; 27 | } 28 | QTextEdit { 29 | background-color:#1e1d23; 30 | color: #a9b7c6; 31 | } 32 | QPlainTextEdit { 33 | selection-background-color:#007b50; 34 | background-color:#1e1d23; 35 | border-style: solid; 36 | border-top-color: transparent; 37 | border-right-color: transparent; 38 | border-left-color: transparent; 39 | border-bottom-color: transparent; 40 | border-width: 1px; 41 | color: #a9b7c6; 42 | } 43 | QPushButton{ 44 | border-style: solid; 45 | border-top-color: transparent; 46 | border-right-color: transparent; 47 | border-left-color: transparent; 48 | border-bottom-color: transparent; 49 | border-width: 1px; 50 | border-style: solid; 51 | color: #a9b7c6; 52 | padding: 2px; 53 | background-color: #1e1d23; 54 | } 55 | QPushButton::default{ 56 | border-style: inset; 57 | border-top-color: transparent; 58 | border-right-color: transparent; 59 | border-left-color: transparent; 60 | border-bottom-color: #04b97f; 61 | border-width: 1px; 62 | color: #a9b7c6; 63 | padding: 2px; 64 | background-color: #1e1d23; 65 | } 66 | QToolButton { 67 | border-style: solid; 68 | border-top-color: transparent; 69 | border-right-color: transparent; 70 | border-left-color: transparent; 71 | border-bottom-color: #04b97f; 72 | border-bottom-width: 1px; 73 | border-style: solid; 74 | color: #a9b7c6; 75 | padding: 2px; 76 | background-color: #1e1d23; 77 | } 78 | QToolButton:hover{ 79 | border-style: solid; 80 | border-top-color: transparent; 81 | border-right-color: transparent; 82 | border-left-color: transparent; 83 | border-bottom-color: #37efba; 84 | border-bottom-width: 2px; 85 | border-style: solid; 86 | color: #FFFFFF; 87 | padding-bottom: 1px; 88 | background-color: #1e1d23; 89 | } 90 | QPushButton:hover{ 91 | border-style: solid; 92 | border-top-color: transparent; 93 | border-right-color: transparent; 94 | border-left-color: transparent; 95 | border-bottom-color: #37efba; 96 | border-bottom-width: 1px; 97 | border-style: solid; 98 | color: #FFFFFF; 99 | padding-bottom: 2px; 100 | background-color: #1e1d23; 101 | } 102 | QPushButton:pressed{ 103 | border-style: solid; 104 | border-top-color: transparent; 105 | border-right-color: transparent; 106 | border-left-color: transparent; 107 | border-bottom-color: #37efba; 108 | border-bottom-width: 2px; 109 | border-style: solid; 110 | color: #37efba; 111 | padding-bottom: 1px; 112 | background-color: #1e1d23; 113 | } 114 | QPushButton:disabled{ 115 | border-style: solid; 116 | border-top-color: transparent; 117 | border-right-color: transparent; 118 | border-left-color: transparent; 119 | border-bottom-color: #808086; 120 | border-bottom-width: 2px; 121 | border-style: solid; 122 | color: #808086; 123 | padding-bottom: 1px; 124 | background-color: #1e1d23; 125 | } 126 | QLineEdit { 127 | border-width: 1px; border-radius: 4px; 128 | border-color: rgb(58, 58, 58); 129 | border-style: inset; 130 | padding: 0 8px; 131 | color: #a9b7c6; 132 | background:#1e1d23; 133 | selection-background-color:#007b50; 134 | selection-color: #FFFFFF; 135 | } 136 | QLabel { 137 | color: #a9b7c6; 138 | } 139 | QLCDNumber { 140 | color: #37e6b4; 141 | } 142 | QProgressBar { 143 | text-align: center; 144 | color: rgb(240, 240, 240); 145 | border-width: 1px; 146 | border-radius: 10px; 147 | border-color: rgb(58, 58, 58); 148 | border-style: inset; 149 | background-color:#1e1d23; 150 | } 151 | QProgressBar::chunk { 152 | background-color: #04b97f; 153 | border-radius: 5px; 154 | } 155 | QMenuBar { 156 | background-color: #1e1d23; 157 | } 158 | QMenuBar::item { 159 | color: #a9b7c6; 160 | spacing: 3px; 161 | padding: 1px 4px; 162 | background: #1e1d23; 163 | } 164 | 165 | QMenuBar::item:selected { 166 | background:#1e1d23; 167 | color: #FFFFFF; 168 | } 169 | QMenu::item:selected { 170 | border-style: solid; 171 | border-top-color: transparent; 172 | border-right-color: transparent; 173 | border-left-color: #04b97f; 174 | border-bottom-color: transparent; 175 | border-left-width: 2px; 176 | color: #FFFFFF; 177 | padding-left:15px; 178 | padding-top:4px; 179 | padding-bottom:4px; 180 | padding-right:7px; 181 | background-color: #1e1d23; 182 | } 183 | QMenu::item { 184 | border-style: solid; 185 | border-top-color: transparent; 186 | border-right-color: transparent; 187 | border-left-color: transparent; 188 | border-bottom-color: transparent; 189 | border-bottom-width: 1px; 190 | border-style: solid; 191 | color: #a9b7c6; 192 | padding-left:17px; 193 | padding-top:4px; 194 | padding-bottom:4px; 195 | padding-right:7px; 196 | background-color: #1e1d23; 197 | } 198 | QMenu{ 199 | background-color:#1e1d23; 200 | } 201 | QTabWidget { 202 | color:rgb(0,0,0); 203 | background-color:#1e1d23; 204 | } 205 | QTabWidget::pane { 206 | border-color: rgb(77,77,77); 207 | background-color:#1e1d23; 208 | border-style: solid; 209 | border-width: 1px; 210 | border-radius: 6px; 211 | } 212 | QTabBar::tab { 213 | border-style: solid; 214 | border-top-color: transparent; 215 | border-right-color: transparent; 216 | border-left-color: transparent; 217 | border-bottom-color: transparent; 218 | border-bottom-width: 1px; 219 | border-style: solid; 220 | color: #808086; 221 | padding: 3px; 222 | margin-left:3px; 223 | background-color: #1e1d23; 224 | } 225 | QTabBar::tab:selected, QTabBar::tab:last:selected, QTabBar::tab:hover { 226 | border-style: solid; 227 | border-top-color: transparent; 228 | border-right-color: transparent; 229 | border-left-color: transparent; 230 | border-bottom-color: #04b97f; 231 | border-bottom-width: 2px; 232 | border-style: solid; 233 | color: #FFFFFF; 234 | padding-left: 3px; 235 | padding-bottom: 2px; 236 | margin-left:3px; 237 | background-color: #1e1d23; 238 | } 239 | 240 | QCheckBox { 241 | color: #a9b7c6; 242 | padding: 2px; 243 | } 244 | QCheckBox:disabled { 245 | color: #808086; 246 | padding: 2px; 247 | } 248 | 249 | QCheckBox:hover { 250 | border-radius:4px; 251 | border-style:solid; 252 | padding-left: 1px; 253 | padding-right: 1px; 254 | padding-bottom: 1px; 255 | padding-top: 1px; 256 | border-width:1px; 257 | border-color: rgb(87, 97, 106); 258 | background-color:#1e1d23; 259 | } 260 | QCheckBox::indicator:checked { 261 | 262 | height: 10px; 263 | width: 10px; 264 | border-style:solid; 265 | border-width: 1px; 266 | border-color: #04b97f; 267 | color: #a9b7c6; 268 | background-color: #04b97f; 269 | } 270 | QCheckBox::indicator:unchecked { 271 | 272 | height: 10px; 273 | width: 10px; 274 | border-style:solid; 275 | border-width: 1px; 276 | border-color: #04b97f; 277 | color: #a9b7c6; 278 | background-color: transparent; 279 | } 280 | QRadioButton { 281 | color: #a9b7c6; 282 | background-color: #1e1d23; 283 | padding: 1px; 284 | } 285 | QRadioButton::indicator:checked { 286 | height: 10px; 287 | width: 10px; 288 | border-style:solid; 289 | border-radius:5px; 290 | border-width: 1px; 291 | border-color: #04b97f; 292 | color: #a9b7c6; 293 | background-color: #04b97f; 294 | } 295 | QRadioButton::indicator:!checked { 296 | height: 10px; 297 | width: 10px; 298 | border-style:solid; 299 | border-radius:5px; 300 | border-width: 1px; 301 | border-color: #04b97f; 302 | color: #a9b7c6; 303 | background-color: transparent; 304 | } 305 | QStatusBar { 306 | color:#027f7f; 307 | } 308 | QSpinBox { 309 | color: #a9b7c6; 310 | background-color: #1e1d23; 311 | } 312 | QDoubleSpinBox { 313 | color: #a9b7c6; 314 | background-color: #1e1d23; 315 | } 316 | QTimeEdit { 317 | color: #a9b7c6; 318 | background-color: #1e1d23; 319 | } 320 | QDateTimeEdit { 321 | color: #a9b7c6; 322 | background-color: #1e1d23; 323 | } 324 | QDateEdit { 325 | color: #a9b7c6; 326 | background-color: #1e1d23; 327 | } 328 | QComboBox { 329 | color: #a9b7c6; 330 | background: #1e1d23; 331 | } 332 | QComboBox:editable { 333 | background: #1e1d23; 334 | color: #a9b7c6; 335 | selection-background-color: #1e1d23; 336 | } 337 | QComboBox QAbstractItemView { 338 | color: #a9b7c6; 339 | background: #1e1d23; 340 | selection-color: #FFFFFF; 341 | selection-background-color: #1e1d23; 342 | } 343 | QComboBox:!editable:on, QComboBox::drop-down:editable:on { 344 | color: #a9b7c6; 345 | background: #1e1d23; 346 | } 347 | QFontComboBox { 348 | color: #a9b7c6; 349 | background-color: #1e1d23; 350 | } 351 | QToolBox { 352 | color: #a9b7c6; 353 | background-color: #1e1d23; 354 | } 355 | QToolBox::tab { 356 | color: #a9b7c6; 357 | background-color: #1e1d23; 358 | } 359 | QToolBox::tab:selected { 360 | color: #FFFFFF; 361 | background-color: #1e1d23; 362 | } 363 | QScrollArea { 364 | color: #FFFFFF; 365 | background-color: #1e1d23; 366 | } 367 | QSlider::groove:horizontal { 368 | height: 5px; 369 | background: #04b97f; 370 | } 371 | QSlider::groove:vertical { 372 | width: 5px; 373 | background: #04b97f; 374 | } 375 | QSlider::handle:horizontal { 376 | background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #b4b4b4, stop:1 #8f8f8f); 377 | border: 1px solid #5c5c5c; 378 | width: 14px; 379 | margin: -5px 0; 380 | border-radius: 7px; 381 | } 382 | QSlider::handle:vertical { 383 | background: qlineargradient(x1:1, y1:1, x2:0, y2:0, stop:0 #b4b4b4, stop:1 #8f8f8f); 384 | border: 1px solid #5c5c5c; 385 | height: 14px; 386 | margin: 0 -5px; 387 | border-radius: 7px; 388 | } 389 | QSlider::add-page:horizontal { 390 | background: white; 391 | } 392 | QSlider::add-page:vertical { 393 | background: white; 394 | } 395 | QSlider::sub-page:horizontal { 396 | background: #04b97f; 397 | } 398 | QSlider::sub-page:vertical { 399 | background: #04b97f; 400 | } 401 | 402 | 403 | 404 | 405 | 406 | 0 407 | 0 408 | 801 409 | 581 410 | 411 | 412 | 413 | 0 414 | 415 | 416 | false 417 | 418 | 419 | false 420 | 421 | 422 | false 423 | 424 | 425 | 426 | Main 427 | 428 | 429 | 430 | 431 | 450 432 | 420 433 | 300 434 | 50 435 | 436 | 437 | 438 | New Image 439 | 440 | 441 | 442 | 443 | 444 | 450 445 | 50 446 | 300 447 | 300 448 | 449 | 450 | 451 | Add Image 452 | 453 | 454 | true 455 | 456 | 457 | 0 458 | 459 | 460 | 461 | 462 | 463 | 290 464 | 40 465 | 130 466 | 51 467 | 468 | 469 | 470 | Show Database 471 | 472 | 473 | 474 | 475 | false 476 | 477 | 478 | 479 | 20 480 | 40 481 | 250 482 | 51 483 | 484 | 485 | 486 | Reconaissance 487 | 488 | 489 | 490 | 491 | false 492 | 493 | 494 | 495 | 20 496 | 120 497 | 190 498 | 34 499 | 500 | 501 | 502 | Detection 503 | 504 | 505 | 506 | 507 | false 508 | 509 | 510 | 511 | 230 512 | 120 513 | 190 514 | 34 515 | 516 | 517 | 518 | Prétraitements 519 | 520 | 521 | 522 | 523 | false 524 | 525 | 526 | 527 | 20 528 | 170 529 | 90 530 | 35 531 | 532 | 533 | 534 | Visage 535 | 536 | 537 | 538 | 539 | false 540 | 541 | 542 | 543 | 120 544 | 170 545 | 90 546 | 35 547 | 548 | 549 | 550 | Nez 551 | 552 | 553 | 554 | 555 | false 556 | 557 | 558 | 559 | 120 560 | 210 561 | 90 562 | 35 563 | 564 | 565 | 566 | Bouche 567 | 568 | 569 | 570 | 571 | false 572 | 573 | 574 | 575 | 20 576 | 210 577 | 90 578 | 35 579 | 580 | 581 | 582 | Yeux 583 | 584 | 585 | 586 | 587 | false 588 | 589 | 590 | 591 | 330 592 | 210 593 | 90 594 | 35 595 | 596 | 597 | 598 | Denoising 599 | 600 | 601 | 602 | 603 | false 604 | 605 | 606 | 607 | 230 608 | 210 609 | 90 610 | 35 611 | 612 | 613 | 614 | Median 615 | 616 | 617 | 618 | 619 | false 620 | 621 | 622 | 623 | 330 624 | 170 625 | 90 626 | 35 627 | 628 | 629 | 630 | Egaliser 631 | 632 | 633 | 634 | 635 | false 636 | 637 | 638 | 639 | 230 640 | 170 641 | 90 642 | 35 643 | 644 | 645 | 646 | Normaliser 647 | 648 | 649 | 650 | 651 | false 652 | 653 | 654 | 655 | 230 656 | 280 657 | 190 658 | 34 659 | 660 | 661 | 662 | Miroir 663 | 664 | 665 | 666 | 667 | false 668 | 669 | 670 | 671 | 20 672 | 280 673 | 190 674 | 34 675 | 676 | 677 | 678 | Rotation 679 | 680 | 681 | 682 | 683 | 684 | 20 685 | 100 686 | 400 687 | 20 688 | 689 | 690 | 691 | Qt::Horizontal 692 | 693 | 694 | 695 | 696 | 697 | 20 698 | 250 699 | 400 700 | 20 701 | 702 | 703 | 704 | Qt::Horizontal 705 | 706 | 707 | 708 | 709 | 710 | 20 711 | 260 712 | 400 713 | 20 714 | 715 | 716 | 717 | Qt::Horizontal 718 | 719 | 720 | 721 | 722 | 723 | 20 724 | 90 725 | 400 726 | 20 727 | 728 | 729 | 730 | Qt::Horizontal 731 | 732 | 733 | 734 | 735 | 736 | 20 737 | 340 738 | 400 739 | 140 740 | 741 | 742 | 743 | Qlabel{ 744 | background: qlineargradient(spread:pad, x1:0, y1:1, x2:0, y2:0, stop:0 rgba(0, 0, 0, 255), stop:0.05 rgba(14, 8, 73, 255), stop:0.36 rgba(28, 17, 145, 255), stop:0.6 rgba(126, 14, 81, 255), stop:0.75 rgba(234, 11, 11, 255), stop:0.79 rgba(244, 70, 5, 255), stop:0.86 rgba(255, 136, 0, 255), stop:0.935 rgba(239, 236, 55, 255))} 745 | 746 | 747 | Histogramme 748 | 749 | 750 | 751 | 752 | 753 | true 754 | 755 | 756 | Report 757 | 758 | 759 | 760 | 761 | 762 | 763 | 764 | 0 765 | 0 766 | 800 767 | 18 768 | 769 | 770 | 771 | 772 | 773 | 774 | 775 | 776 | -------------------------------------------------------------------------------- /ressources/ui/materialDark - Copie.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWindow 4 | 5 | 6 | 7 | 0 8 | 0 9 | 800 10 | 600 11 | 12 | 13 | 14 | MainWindow 15 | 16 | 17 | *{ 18 | background-color:#1e1d23;} 19 | QMainWindow { 20 | background-color:#1e1d23; 21 | } 22 | QDialog { 23 | background-color:#1e1d23; 24 | } 25 | QColorDialog { 26 | background-color:#1e1d23; 27 | } 28 | QTextEdit { 29 | background-color:#1e1d23; 30 | color: #a9b7c6; 31 | } 32 | QPlainTextEdit { 33 | selection-background-color:#007b50; 34 | background-color:#1e1d23; 35 | border-style: solid; 36 | border-top-color: transparent; 37 | border-right-color: transparent; 38 | border-left-color: transparent; 39 | border-bottom-color: transparent; 40 | border-width: 1px; 41 | color: #a9b7c6; 42 | } 43 | QPushButton{ 44 | border-style: solid; 45 | border-top-color: transparent; 46 | border-right-color: transparent; 47 | border-left-color: transparent; 48 | border-bottom-color: transparent; 49 | border-width: 1px; 50 | border-style: solid; 51 | color: #a9b7c6; 52 | padding: 2px; 53 | background-color: #1e1d23; 54 | } 55 | QPushButton::default{ 56 | border-style: inset; 57 | border-top-color: transparent; 58 | border-right-color: transparent; 59 | border-left-color: transparent; 60 | border-bottom-color: #04b97f; 61 | border-width: 1px; 62 | color: #a9b7c6; 63 | padding: 2px; 64 | background-color: #1e1d23; 65 | } 66 | QToolButton { 67 | border-style: solid; 68 | border-top-color: transparent; 69 | border-right-color: transparent; 70 | border-left-color: transparent; 71 | border-bottom-color: #04b97f; 72 | border-bottom-width: 1px; 73 | border-style: solid; 74 | color: #a9b7c6; 75 | padding: 2px; 76 | background-color: #1e1d23; 77 | } 78 | QToolButton:hover{ 79 | border-style: solid; 80 | border-top-color: transparent; 81 | border-right-color: transparent; 82 | border-left-color: transparent; 83 | border-bottom-color: #37efba; 84 | border-bottom-width: 2px; 85 | border-style: solid; 86 | color: #FFFFFF; 87 | padding-bottom: 1px; 88 | background-color: #1e1d23; 89 | } 90 | QPushButton:hover{ 91 | border-style: solid; 92 | border-top-color: transparent; 93 | border-right-color: transparent; 94 | border-left-color: transparent; 95 | border-bottom-color: #37efba; 96 | border-bottom-width: 1px; 97 | border-style: solid; 98 | color: #FFFFFF; 99 | padding-bottom: 2px; 100 | background-color: #1e1d23; 101 | } 102 | QPushButton:pressed{ 103 | border-style: solid; 104 | border-top-color: transparent; 105 | border-right-color: transparent; 106 | border-left-color: transparent; 107 | border-bottom-color: #37efba; 108 | border-bottom-width: 2px; 109 | border-style: solid; 110 | color: #37efba; 111 | padding-bottom: 1px; 112 | background-color: #1e1d23; 113 | } 114 | QPushButton:disabled{ 115 | border-style: solid; 116 | border-top-color: transparent; 117 | border-right-color: transparent; 118 | border-left-color: transparent; 119 | border-bottom-color: #808086; 120 | border-bottom-width: 2px; 121 | border-style: solid; 122 | color: #808086; 123 | padding-bottom: 1px; 124 | background-color: #1e1d23; 125 | } 126 | QLineEdit { 127 | border-width: 1px; border-radius: 4px; 128 | border-color: rgb(58, 58, 58); 129 | border-style: inset; 130 | padding: 0 8px; 131 | color: #a9b7c6; 132 | background:#1e1d23; 133 | selection-background-color:#007b50; 134 | selection-color: #FFFFFF; 135 | } 136 | QLabel { 137 | color: #a9b7c6; 138 | } 139 | QLCDNumber { 140 | color: #37e6b4; 141 | } 142 | QProgressBar { 143 | text-align: center; 144 | color: rgb(240, 240, 240); 145 | border-width: 1px; 146 | border-radius: 10px; 147 | border-color: rgb(58, 58, 58); 148 | border-style: inset; 149 | background-color:#1e1d23; 150 | } 151 | QProgressBar::chunk { 152 | background-color: #04b97f; 153 | border-radius: 5px; 154 | } 155 | QMenuBar { 156 | background-color: #1e1d23; 157 | } 158 | QMenuBar::item { 159 | color: #a9b7c6; 160 | spacing: 3px; 161 | padding: 1px 4px; 162 | background: #1e1d23; 163 | } 164 | 165 | QMenuBar::item:selected { 166 | background:#1e1d23; 167 | color: #FFFFFF; 168 | } 169 | QMenu::item:selected { 170 | border-style: solid; 171 | border-top-color: transparent; 172 | border-right-color: transparent; 173 | border-left-color: #04b97f; 174 | border-bottom-color: transparent; 175 | border-left-width: 2px; 176 | color: #FFFFFF; 177 | padding-left:15px; 178 | padding-top:4px; 179 | padding-bottom:4px; 180 | padding-right:7px; 181 | background-color: #1e1d23; 182 | } 183 | QMenu::item { 184 | border-style: solid; 185 | border-top-color: transparent; 186 | border-right-color: transparent; 187 | border-left-color: transparent; 188 | border-bottom-color: transparent; 189 | border-bottom-width: 1px; 190 | border-style: solid; 191 | color: #a9b7c6; 192 | padding-left:17px; 193 | padding-top:4px; 194 | padding-bottom:4px; 195 | padding-right:7px; 196 | background-color: #1e1d23; 197 | } 198 | QMenu{ 199 | background-color:#1e1d23; 200 | } 201 | QTabWidget { 202 | color:rgb(0,0,0); 203 | background-color:#1e1d23; 204 | } 205 | QTabWidget::pane { 206 | border-color: rgb(77,77,77); 207 | background-color:#1e1d23; 208 | border-style: solid; 209 | border-width: 1px; 210 | border-radius: 6px; 211 | } 212 | QTabBar::tab { 213 | border-style: solid; 214 | border-top-color: transparent; 215 | border-right-color: transparent; 216 | border-left-color: transparent; 217 | border-bottom-color: transparent; 218 | border-bottom-width: 1px; 219 | border-style: solid; 220 | color: #808086; 221 | padding: 3px; 222 | margin-left:3px; 223 | background-color: #1e1d23; 224 | } 225 | QTabBar::tab:selected, QTabBar::tab:last:selected, QTabBar::tab:hover { 226 | border-style: solid; 227 | border-top-color: transparent; 228 | border-right-color: transparent; 229 | border-left-color: transparent; 230 | border-bottom-color: #04b97f; 231 | border-bottom-width: 2px; 232 | border-style: solid; 233 | color: #FFFFFF; 234 | padding-left: 3px; 235 | padding-bottom: 2px; 236 | margin-left:3px; 237 | background-color: #1e1d23; 238 | } 239 | 240 | QCheckBox { 241 | color: #a9b7c6; 242 | padding: 2px; 243 | } 244 | QCheckBox:disabled { 245 | color: #808086; 246 | padding: 2px; 247 | } 248 | 249 | QCheckBox:hover { 250 | border-radius:4px; 251 | border-style:solid; 252 | padding-left: 1px; 253 | padding-right: 1px; 254 | padding-bottom: 1px; 255 | padding-top: 1px; 256 | border-width:1px; 257 | border-color: rgb(87, 97, 106); 258 | background-color:#1e1d23; 259 | } 260 | QCheckBox::indicator:checked { 261 | 262 | height: 10px; 263 | width: 10px; 264 | border-style:solid; 265 | border-width: 1px; 266 | border-color: #04b97f; 267 | color: #a9b7c6; 268 | background-color: #04b97f; 269 | } 270 | QCheckBox::indicator:unchecked { 271 | 272 | height: 10px; 273 | width: 10px; 274 | border-style:solid; 275 | border-width: 1px; 276 | border-color: #04b97f; 277 | color: #a9b7c6; 278 | background-color: transparent; 279 | } 280 | QRadioButton { 281 | color: #a9b7c6; 282 | background-color: #1e1d23; 283 | padding: 1px; 284 | } 285 | QRadioButton::indicator:checked { 286 | height: 10px; 287 | width: 10px; 288 | border-style:solid; 289 | border-radius:5px; 290 | border-width: 1px; 291 | border-color: #04b97f; 292 | color: #a9b7c6; 293 | background-color: #04b97f; 294 | } 295 | QRadioButton::indicator:!checked { 296 | height: 10px; 297 | width: 10px; 298 | border-style:solid; 299 | border-radius:5px; 300 | border-width: 1px; 301 | border-color: #04b97f; 302 | color: #a9b7c6; 303 | background-color: transparent; 304 | } 305 | QStatusBar { 306 | color:#027f7f; 307 | } 308 | QSpinBox { 309 | color: #a9b7c6; 310 | background-color: #1e1d23; 311 | } 312 | QDoubleSpinBox { 313 | color: #a9b7c6; 314 | background-color: #1e1d23; 315 | } 316 | QTimeEdit { 317 | color: #a9b7c6; 318 | background-color: #1e1d23; 319 | } 320 | QDateTimeEdit { 321 | color: #a9b7c6; 322 | background-color: #1e1d23; 323 | } 324 | QDateEdit { 325 | color: #a9b7c6; 326 | background-color: #1e1d23; 327 | } 328 | QComboBox { 329 | color: #a9b7c6; 330 | background: #1e1d23; 331 | } 332 | QComboBox:editable { 333 | background: #1e1d23; 334 | color: #a9b7c6; 335 | selection-background-color: #1e1d23; 336 | } 337 | QComboBox QAbstractItemView { 338 | color: #a9b7c6; 339 | background: #1e1d23; 340 | selection-color: #FFFFFF; 341 | selection-background-color: #1e1d23; 342 | } 343 | QComboBox:!editable:on, QComboBox::drop-down:editable:on { 344 | color: #a9b7c6; 345 | background: #1e1d23; 346 | } 347 | QFontComboBox { 348 | color: #a9b7c6; 349 | background-color: #1e1d23; 350 | } 351 | QToolBox { 352 | color: #a9b7c6; 353 | background-color: #1e1d23; 354 | } 355 | QToolBox::tab { 356 | color: #a9b7c6; 357 | background-color: #1e1d23; 358 | } 359 | QToolBox::tab:selected { 360 | color: #FFFFFF; 361 | background-color: #1e1d23; 362 | } 363 | QScrollArea { 364 | color: #FFFFFF; 365 | background-color: #1e1d23; 366 | } 367 | QSlider::groove:horizontal { 368 | height: 5px; 369 | background: #04b97f; 370 | } 371 | QSlider::groove:vertical { 372 | width: 5px; 373 | background: #04b97f; 374 | } 375 | QSlider::handle:horizontal { 376 | background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #b4b4b4, stop:1 #8f8f8f); 377 | border: 1px solid #5c5c5c; 378 | width: 14px; 379 | margin: -5px 0; 380 | border-radius: 7px; 381 | } 382 | QSlider::handle:vertical { 383 | background: qlineargradient(x1:1, y1:1, x2:0, y2:0, stop:0 #b4b4b4, stop:1 #8f8f8f); 384 | border: 1px solid #5c5c5c; 385 | height: 14px; 386 | margin: 0 -5px; 387 | border-radius: 7px; 388 | } 389 | QSlider::add-page:horizontal { 390 | background: white; 391 | } 392 | QSlider::add-page:vertical { 393 | background: white; 394 | } 395 | QSlider::sub-page:horizontal { 396 | background: #04b97f; 397 | } 398 | QSlider::sub-page:vertical { 399 | background: #04b97f; 400 | } 401 | 402 | 403 | 404 | 405 | 406 | 0 407 | 0 408 | 801 409 | 581 410 | 411 | 412 | 413 | 0 414 | 415 | 416 | false 417 | 418 | 419 | false 420 | 421 | 422 | false 423 | 424 | 425 | 426 | Main 427 | 428 | 429 | 430 | 431 | 450 432 | 420 433 | 300 434 | 50 435 | 436 | 437 | 438 | New Image 439 | 440 | 441 | 442 | 443 | 444 | 450 445 | 50 446 | 300 447 | 300 448 | 449 | 450 | 451 | Add Image 452 | 453 | 454 | true 455 | 456 | 457 | 0 458 | 459 | 460 | 461 | 462 | 463 | 290 464 | 40 465 | 130 466 | 51 467 | 468 | 469 | 470 | Show Database 471 | 472 | 473 | 474 | 475 | false 476 | 477 | 478 | 479 | 20 480 | 40 481 | 250 482 | 51 483 | 484 | 485 | 486 | Reconaissance 487 | 488 | 489 | 490 | 491 | false 492 | 493 | 494 | 495 | 20 496 | 120 497 | 190 498 | 34 499 | 500 | 501 | 502 | Detection 503 | 504 | 505 | 506 | 507 | false 508 | 509 | 510 | 511 | 230 512 | 120 513 | 190 514 | 34 515 | 516 | 517 | 518 | Prétraitements 519 | 520 | 521 | 522 | 523 | false 524 | 525 | 526 | 527 | 20 528 | 170 529 | 90 530 | 35 531 | 532 | 533 | 534 | Visage 535 | 536 | 537 | 538 | 539 | false 540 | 541 | 542 | 543 | 120 544 | 170 545 | 90 546 | 35 547 | 548 | 549 | 550 | Nez 551 | 552 | 553 | 554 | 555 | false 556 | 557 | 558 | 559 | 120 560 | 210 561 | 90 562 | 35 563 | 564 | 565 | 566 | Bouche 567 | 568 | 569 | 570 | 571 | false 572 | 573 | 574 | 575 | 20 576 | 210 577 | 90 578 | 35 579 | 580 | 581 | 582 | Yeux 583 | 584 | 585 | 586 | 587 | false 588 | 589 | 590 | 591 | 330 592 | 210 593 | 90 594 | 35 595 | 596 | 597 | 598 | Denoising 599 | 600 | 601 | 602 | 603 | false 604 | 605 | 606 | 607 | 230 608 | 210 609 | 90 610 | 35 611 | 612 | 613 | 614 | Median 615 | 616 | 617 | 618 | 619 | false 620 | 621 | 622 | 623 | 330 624 | 170 625 | 90 626 | 35 627 | 628 | 629 | 630 | Egaliser 631 | 632 | 633 | 634 | 635 | false 636 | 637 | 638 | 639 | 230 640 | 170 641 | 90 642 | 35 643 | 644 | 645 | 646 | Normaliser 647 | 648 | 649 | 650 | 651 | false 652 | 653 | 654 | 655 | 230 656 | 280 657 | 190 658 | 34 659 | 660 | 661 | 662 | Miroir 663 | 664 | 665 | 666 | 667 | false 668 | 669 | 670 | 671 | 20 672 | 280 673 | 190 674 | 34 675 | 676 | 677 | 678 | Rotation 679 | 680 | 681 | 682 | 683 | 684 | 20 685 | 100 686 | 400 687 | 20 688 | 689 | 690 | 691 | Qt::Horizontal 692 | 693 | 694 | 695 | 696 | 697 | 20 698 | 250 699 | 400 700 | 20 701 | 702 | 703 | 704 | Qt::Horizontal 705 | 706 | 707 | 708 | 709 | 710 | 20 711 | 260 712 | 400 713 | 20 714 | 715 | 716 | 717 | Qt::Horizontal 718 | 719 | 720 | 721 | 722 | 723 | 20 724 | 90 725 | 400 726 | 20 727 | 728 | 729 | 730 | Qt::Horizontal 731 | 732 | 733 | 734 | 735 | 736 | 20 737 | 340 738 | 400 739 | 140 740 | 741 | 742 | 743 | Qlabel{ 744 | background: qlineargradient(spread:pad, x1:0, y1:1, x2:0, y2:0, stop:0 rgba(0, 0, 0, 255), stop:0.05 rgba(14, 8, 73, 255), stop:0.36 rgba(28, 17, 145, 255), stop:0.6 rgba(126, 14, 81, 255), stop:0.75 rgba(234, 11, 11, 255), stop:0.79 rgba(244, 70, 5, 255), stop:0.86 rgba(255, 136, 0, 255), stop:0.935 rgba(239, 236, 55, 255))} 745 | 746 | 747 | Histogramme 748 | 749 | 750 | 751 | 752 | 753 | true 754 | 755 | 756 | Report 757 | 758 | 759 | 760 | 761 | 762 | 763 | 764 | 0 765 | 0 766 | 800 767 | 18 768 | 769 | 770 | 771 | 772 | 773 | 774 | 775 | 776 | -------------------------------------------------------------------------------- /ressources/rapport/example_modified.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |

12 | 1 ere etape : 13 |

14 |
15 | this is an image of my desktop 16 | 17 | 18 | 19 | ====|> 20 | 21 | 22 | 23 | this is an image of my desktop 24 |
25 |

26 | 1 ere etape 2 : 27 |

28 |
29 | this is an image of my desktop 30 | 31 | 32 | 33 | ====|> 34 | 35 | 36 | 37 | this is an image of my desktop 38 |
39 |

40 | 2 eme etape : 41 |

42 |
43 | 44 | 45 | 46 | 47 | 48 | 51 | 54 | 57 | 60 | 63 | 66 | 69 | 72 | 73 | 74 | 77 | 80 | 83 | 86 | 89 | 92 | 95 | 98 | 99 | 100 | 103 | 106 | 109 | 112 | 115 | 118 | 121 | 124 | 125 | 126 | 129 | 132 | 135 | 138 | 141 | 144 | 147 | 150 | 151 | 152 | 155 | 158 | 161 | 164 | 167 | 170 | 173 | 176 | 177 | 178 | 181 | 184 | 187 | 190 | 193 | 196 | 199 | 202 | 203 | 204 | 207 | 210 | 213 | 216 | 219 | 222 | 225 | 228 | 229 | 230 | 233 | 236 | 239 | 242 | 245 | 248 | 251 | 254 | 255 | 256 |
49 | 0 50 | 52 | 0 53 | 55 | 0 56 | 58 | 0 59 | 61 | 0 62 | 64 | 0 65 | 67 | 0 68 | 70 | 0 71 |
75 | 0 76 | 78 | 0 79 | 81 | 0 82 | 84 | 0 85 | 87 | 0 88 | 90 | 0 91 | 93 | 0 94 | 96 | 0 97 |
101 | 0 102 | 104 | 0 105 | 107 | 0 108 | 110 | 0 111 | 113 | 0 114 | 116 | 0 117 | 119 | 0 120 | 122 | 0 123 |
127 | 0 128 | 130 | 0 131 | 133 | 0 134 | 136 | 0 137 | 139 | 0 140 | 142 | 0 143 | 145 | 0 146 | 148 | 0 149 |
153 | 0 154 | 156 | 0 157 | 159 | 0 160 | 162 | 0 163 | 165 | 0 166 | 168 | 0 169 | 171 | 0 172 | 174 | 0 175 |
179 | 0 180 | 182 | 0 183 | 185 | 0 186 | 188 | 0 189 | 191 | 0 192 | 194 | 0 195 | 197 | 0 198 | 200 | 0 201 |
205 | 0 206 | 208 | 0 209 | 211 | 0 212 | 214 | 0 215 | 217 | 0 218 | 220 | 0 221 | 223 | 0 224 | 226 | 0 227 |
231 | 0 232 | 234 | 0 235 | 237 | 0 238 | 240 | 0 241 | 243 | 0 244 | 246 | 0 247 | 249 | 0 250 | 252 | 0 253 |
257 | 258 | 259 | 260 | 261 | 262 |
263 |
264 |
265 | ====|> 266 |
267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 277 | 280 | 283 | 286 | 289 | 292 | 295 | 298 | 299 | 300 | 303 | 306 | 309 | 312 | 315 | 318 | 321 | 324 | 325 | 326 | 329 | 332 | 335 | 338 | 341 | 344 | 347 | 350 | 351 | 352 | 355 | 358 | 361 | 364 | 367 | 370 | 373 | 376 | 377 | 378 | 381 | 384 | 387 | 390 | 393 | 396 | 399 | 402 | 403 | 404 | 407 | 410 | 413 | 416 | 419 | 422 | 425 | 428 | 429 | 430 | 433 | 436 | 439 | 442 | 445 | 448 | 451 | 454 | 455 | 456 | 459 | 462 | 465 | 468 | 471 | 474 | 477 | 480 | 481 | 482 |
275 | 0 276 | 278 | 0 279 | 281 | 0 282 | 284 | 0 285 | 287 | 0 288 | 290 | 0 291 | 293 | 0 294 | 296 | 0 297 |
301 | 0 302 | 304 | 0 305 | 307 | 0 308 | 310 | 0 311 | 313 | 0 314 | 316 | 0 317 | 319 | 0 320 | 322 | 0 323 |
327 | 0 328 | 330 | 0 331 | 333 | 0 334 | 336 | 0 337 | 339 | 0 340 | 342 | 0 343 | 345 | 0 346 | 348 | 0 349 |
353 | 0 354 | 356 | 0 357 | 359 | 0 360 | 362 | 0 363 | 365 | 0 366 | 368 | 0 369 | 371 | 0 372 | 374 | 0 375 |
379 | 0 380 | 382 | 0 383 | 385 | 0 386 | 388 | 0 389 | 391 | 0 392 | 394 | 0 395 | 397 | 0 398 | 400 | 0 401 |
405 | 0 406 | 408 | 0 409 | 411 | 0 412 | 414 | 0 415 | 417 | 0 418 | 420 | 0 421 | 423 | 0 424 | 426 | 0 427 |
431 | 0 432 | 434 | 0 435 | 437 | 0 438 | 440 | 0 441 | 443 | 0 444 | 446 | 0 447 | 449 | 0 450 | 452 | 0 453 |
457 | 0 458 | 460 | 0 461 | 463 | 0 464 | 466 | 0 467 | 469 | 0 470 | 472 | 0 473 | 475 | 0 476 | 478 | 0 479 |
483 | 484 | 485 |
486 |

487 | 3 eme etape : 488 |

489 |
490 | 491 | 492 | 493 | 494 | 495 | 498 | 501 | 504 | 507 | 510 | 513 | 516 | 519 | 520 | 521 | 524 | 527 | 530 | 533 | 536 | 539 | 542 | 545 | 546 | 547 | 550 | 553 | 556 | 559 | 562 | 565 | 568 | 571 | 572 | 573 | 576 | 579 | 582 | 585 | 588 | 591 | 594 | 597 | 598 | 599 | 602 | 605 | 608 | 611 | 614 | 617 | 620 | 623 | 624 | 625 | 628 | 631 | 634 | 637 | 640 | 643 | 646 | 649 | 650 | 651 | 654 | 657 | 660 | 663 | 666 | 669 | 672 | 675 | 676 | 677 | 680 | 683 | 686 | 689 | 692 | 695 | 698 | 701 | 702 | 703 |
496 | 0 497 | 499 | 0 500 | 502 | 0 503 | 505 | 0 506 | 508 | 0 509 | 511 | 0 512 | 514 | 0 515 | 517 | 0 518 |
522 | 0 523 | 525 | 0 526 | 528 | 0 529 | 531 | 0 532 | 534 | 0 535 | 537 | 0 538 | 540 | 0 541 | 543 | 0 544 |
548 | 0 549 | 551 | 0 552 | 554 | 0 555 | 557 | 0 558 | 560 | 0 561 | 563 | 0 564 | 566 | 0 567 | 569 | 0 570 |
574 | 0 575 | 577 | 0 578 | 580 | 0 581 | 583 | 0 584 | 586 | 0 587 | 589 | 0 590 | 592 | 0 593 | 595 | 0 596 |
600 | 0 601 | 603 | 0 604 | 606 | 0 607 | 609 | 0 610 | 612 | 0 613 | 615 | 0 616 | 618 | 0 619 | 621 | 0 622 |
626 | 0 627 | 629 | 0 630 | 632 | 0 633 | 635 | 0 636 | 638 | 0 639 | 641 | 0 642 | 644 | 0 645 | 647 | 0 648 |
652 | 0 653 | 655 | 0 656 | 658 | 0 659 | 661 | 0 662 | 664 | 0 665 | 667 | 0 668 | 670 | 0 671 | 673 | 0 674 |
678 | 0 679 | 681 | 0 682 | 684 | 0 685 | 687 | 0 688 | 690 | 0 691 | 693 | 0 694 | 696 | 0 697 | 699 | 0 700 |
704 | 705 | 706 | 707 | 708 | 709 |
710 |
711 |
712 | ====|> 713 |
714 | 715 | 716 | 717 | 718 | 719 | 720 | 721 | 724 | 727 | 730 | 733 | 736 | 739 | 742 | 745 | 746 | 747 | 750 | 753 | 756 | 759 | 762 | 765 | 768 | 771 | 772 | 773 | 776 | 779 | 782 | 785 | 788 | 791 | 794 | 797 | 798 | 799 | 802 | 805 | 808 | 811 | 814 | 817 | 820 | 823 | 824 | 825 | 828 | 831 | 834 | 837 | 840 | 843 | 846 | 849 | 850 | 851 | 854 | 857 | 860 | 863 | 866 | 869 | 872 | 875 | 876 | 877 | 880 | 883 | 886 | 889 | 892 | 895 | 898 | 901 | 902 | 903 | 906 | 909 | 912 | 915 | 918 | 921 | 924 | 927 | 928 | 929 |
722 | 0 723 | 725 | 0 726 | 728 | 0 729 | 731 | 0 732 | 734 | 0 735 | 737 | 0 738 | 740 | 0 741 | 743 | 0 744 |
748 | 0 749 | 751 | 0 752 | 754 | 0 755 | 757 | 0 758 | 760 | 0 761 | 763 | 0 764 | 766 | 0 767 | 769 | 0 770 |
774 | 0 775 | 777 | 0 778 | 780 | 0 781 | 783 | 0 784 | 786 | 0 787 | 789 | 0 790 | 792 | 0 793 | 795 | 0 796 |
800 | 0 801 | 803 | 0 804 | 806 | 0 807 | 809 | 0 810 | 812 | 0 813 | 815 | 0 816 | 818 | 0 819 | 821 | 0 822 |
826 | 0 827 | 829 | 0 830 | 832 | 0 833 | 835 | 0 836 | 838 | 0 839 | 841 | 0 842 | 844 | 0 845 | 847 | 0 848 |
852 | 0 853 | 855 | 0 856 | 858 | 0 859 | 861 | 0 862 | 864 | 0 865 | 867 | 0 868 | 870 | 0 871 | 873 | 0 874 |
878 | 0 879 | 881 | 0 882 | 884 | 0 885 | 887 | 0 888 | 890 | 0 891 | 893 | 0 894 | 896 | 0 897 | 899 | 0 900 |
904 | 0 905 | 907 | 0 908 | 910 | 0 911 | 913 | 0 914 | 916 | 0 917 | 919 | 0 920 | 922 | 0 923 | 925 | 0 926 |
930 | 931 | 932 |
933 |

934 | vecteur 935 |

936 |
937 | 938 | 939 |
940 | 0.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0 941 |
942 |
943 |
944 | 945 | 946 |
947 |
948 |
949 |
950 |
951 | 952 | -------------------------------------------------------------------------------- /ressources/ui/ManjaroStyle.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWindow 4 | 5 | 6 | 7 | 0 8 | 0 9 | 800 10 | 600 11 | 12 | 13 | 14 | MainWindow 15 | 16 | 17 | *{ border:0; 18 | background-color:#151a1e;} 19 | QMainWindow { 20 | background-color:#151a1e; 21 | } 22 | QCalendar { 23 | background-color: #151a1e; 24 | } 25 | QTextEdit { 26 | border-width: 1px; 27 | border-style: solid; 28 | border-color: #4fa08b; 29 | background-color: #222b2e; 30 | color: #d3dae3; 31 | } 32 | QPlainTextEdit { 33 | border-width: 1px; 34 | border-style: solid; 35 | border-color: #4fa08b; 36 | background-color: #222b2e; 37 | color: #d3dae3; 38 | } 39 | QToolButton { 40 | /*border-style: solid;*/ 41 | border-top-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgb(215, 215, 215), stop:1 rgb(222, 222, 222)); 42 | border-right-color: qlineargradient(spread:pad, x1:0, y1:0.5, x2:1, y2:0.5, stop:0 rgb(217, 217, 217), stop:1 rgb(227, 227, 227)); 43 | border-left-color: qlineargradient(spread:pad, x1:0, y1:0.5, x2:1, y2:0.5, stop:0 rgb(227, 227, 227), stop:1 rgb(217, 217, 217)); 44 | border-bottom-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgb(215, 215, 215), stop:1 rgb(222, 222, 222)); 45 | border-width: 1px; 46 | border-radius: 5px; 47 | color: #d3dae3; 48 | padding: 2px; 49 | background-color: rgb(255,255,255); 50 | } 51 | QToolButton:hover{ 52 | border-style: solid; 53 | border-top-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgb(195, 195, 195), stop:1 rgb(222, 222, 222)); 54 | border-right-color: qlineargradient(spread:pad, x1:0, y1:0.5, x2:1, y2:0.5, stop:0 rgb(197, 197, 197), stop:1 rgb(227, 227, 227)); 55 | border-left-color: qlineargradient(spread:pad, x1:0, y1:0.5, x2:1, y2:0.5, stop:0 rgb(227, 227, 227), stop:1 rgb(197, 197, 197)); 56 | border-bottom-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgb(195, 195, 195), stop:1 rgb(222, 222, 222)); 57 | border-width: 1px; 58 | border-radius: 5px; 59 | color: rgb(0,0,0); 60 | padding: 2px; 61 | background-color: rgb(255,255,255); 62 | } 63 | QToolButton:pressed{ 64 | border-style: solid; 65 | border-top-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgb(215, 215, 215), stop:1 rgb(222, 222, 222)); 66 | border-right-color: qlineargradient(spread:pad, x1:0, y1:0.5, x2:1, y2:0.5, stop:0 rgb(217, 217, 217), stop:1 rgb(227, 227, 227)); 67 | border-left-color: qlineargradient(spread:pad, x1:0, y1:0.5, x2:1, y2:0.5, stop:0 rgb(227, 227, 227), stop:1 rgb(217, 217, 217)); 68 | border-bottom-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgb(215, 215, 215), stop:1 rgb(222, 222, 222)); 69 | border-width: 1px; 70 | border-radius: 5px; 71 | color: rgb(0,0,0); 72 | padding: 2px; 73 | background-color: rgb(142,142,142); 74 | } 75 | QPushButton{ 76 | border-style: solid; 77 | border-color: #050a0e; 78 | border-width: 1px; 79 | border-radius: 5px; 80 | color: #d3dae3; 81 | padding: 2px; 82 | background-color: #151a1e; 83 | } 84 | QPushButton::default{ 85 | border-style: solid; 86 | border-color: #050a0e; 87 | border-width: 1px; 88 | border-radius: 5px; 89 | color: #FFFFFF; 90 | padding: 2px; 91 | background-color: #151a1e;; 92 | } 93 | QPushButton:hover{ 94 | border-style: solid; 95 | border-color: #050a0e; 96 | border-width: 1px; 97 | border-radius: 5px; 98 | color: #d3dae3; 99 | padding: 2px; 100 | background-color: #1c1f1f; 101 | } 102 | QPushButton:pressed{ 103 | border-style: solid; 104 | border-color: #050a0e; 105 | border-width: 1px; 106 | border-radius: 5px; 107 | color: #d3dae3; 108 | padding: 2px; 109 | background-color: #2c2f2f; 110 | } 111 | QPushButton:disabled{ 112 | /*border-style: solid; 113 | border-top-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgb(215, 215, 215), stop:1 rgb(222, 222, 222)); 114 | border-right-color: qlineargradient(spread:pad, x1:0, y1:0.5, x2:1, y2:0.5, stop:0 rgb(217, 217, 217), stop:1 rgb(227, 227, 227)); 115 | border-left-color: qlineargradient(spread:pad, x1:0, y1:0.5, x2:1, y2:0.5, stop:0 rgb(227, 227, 227), stop:1 rgb(217, 217, 217)); 116 | border-bottom-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgb(215, 215, 215), stop:1 rgb(222, 222, 222)); 117 | border-width: 1px;*/ 118 | border-radius: 5px; 119 | color: #808086; 120 | padding: 2px; 121 | background-color: rgb(142,142,142); 122 | } 123 | QLineEdit { 124 | border-width: 1px; 125 | border-style: solid; 126 | border-color: #4fa08b; 127 | background-color: #222b2e; 128 | color: #d3dae3; 129 | } 130 | QLabel { 131 | color: #d3dae3; 132 | } 133 | QLCDNumber { 134 | color: #4d9b87; 135 | } 136 | QProgressBar { 137 | text-align: center; 138 | color: #d3dae3; 139 | border-radius: 10px; 140 | border-color: transparent; 141 | border-style: solid; 142 | background-color: #52595d; 143 | } 144 | QProgressBar::chunk { 145 | background-color: #214037 ; 146 | border-radius: 10px; 147 | } 148 | QMenuBar { 149 | background-color: #151a1e; 150 | } 151 | QMenuBar::item { 152 | color: #d3dae3; 153 | spacing: 3px; 154 | padding: 1px 4px; 155 | background-color: #151a1e; 156 | } 157 | 158 | QMenuBar::item:selected { 159 | background-color: #252a2e; 160 | color: #FFFFFF; 161 | } 162 | QMenu { 163 | background-color: #151a1e; 164 | } 165 | QMenu::item:selected { 166 | background-color: #252a2e; 167 | color: #FFFFFF; 168 | } 169 | QMenu::item { 170 | color: #d3dae3; 171 | background-color: #151a1e; 172 | } 173 | QTabWidget { 174 | color:rgb(0,0,0); 175 | background-color:#000000; 176 | } 177 | QTabWidget::pane { 178 | border-color: #050a0e; 179 | background-color: #1e282c; 180 | border-style: solid; 181 | border-width: 1px; 182 | border-bottom-left-radius: 4px; 183 | border-bottom-right-radius: 4px; 184 | } 185 | QTabBar::tab:first { 186 | border-style: solid; 187 | border-left-width:1px; 188 | border-right-width:0px; 189 | border-top-width:1px; 190 | border-bottom-width:0px; 191 | border-top-color: #050a0e; 192 | border-left-color: #050a0e; 193 | border-bottom-color: #050a0e; 194 | border-top-left-radius: 4px; 195 | color: #d3dae3; 196 | padding: 3px; 197 | margin-left:0px; 198 | background-color: #151a1e; 199 | } 200 | QTabBar::tab:last { 201 | border-style: solid; 202 | border-top-width:1px; 203 | border-left-width:1px; 204 | border-right-width:1px; 205 | border-bottom-width:0px; 206 | border-color: #050a0e; 207 | border-top-right-radius: 4px; 208 | color: #d3dae3; 209 | padding: 3px; 210 | margin-left:0px; 211 | background-color: #151a1e; 212 | } 213 | QTabBar::tab { 214 | border-style: solid; 215 | border-top-width:1px; 216 | border-bottom-width:0px; 217 | border-left-width:1px; 218 | border-top-color: #050a0e; 219 | border-left-color: #050a0e; 220 | border-bottom-color: #050a0e; 221 | color: #d3dae3; 222 | padding: 3px; 223 | margin-left:0px; 224 | background-color: #151a1e; 225 | } 226 | QTabBar::tab:selected, QTabBar::tab:last:selected, QTabBar::tab:hover { 227 | border-style: solid; 228 | border-left-width:1px; 229 | border-bottom-width:0px; 230 | border-right-color: transparent; 231 | border-top-color: #050a0e; 232 | border-left-color: #050a0e; 233 | border-bottom-color: #050a0e; 234 | color: #FFFFFF; 235 | padding: 3px; 236 | margin-left:0px; 237 | background-color: #1e282c; 238 | } 239 | 240 | QTabBar::tab:selected, QTabBar::tab:first:selected, QTabBar::tab:hover { 241 | border-style: solid; 242 | border-left-width:1px; 243 | border-bottom-width:0px; 244 | border-top-width:1px; 245 | border-right-color: transparent; 246 | border-top-color: #050a0e; 247 | border-left-color: #050a0e; 248 | border-bottom-color: #050a0e; 249 | color: #FFFFFF; 250 | padding: 3px; 251 | margin-left:0px; 252 | background-color: #1e282c; 253 | } 254 | 255 | QCheckBox { 256 | color: #d3dae3; 257 | padding: 2px; 258 | } 259 | QCheckBox:disabled { 260 | color: #808086; 261 | padding: 2px; 262 | } 263 | 264 | QCheckBox:hover { 265 | border-radius:4px; 266 | border-style:solid; 267 | padding-left: 1px; 268 | padding-right: 1px; 269 | padding-bottom: 1px; 270 | padding-top: 1px; 271 | border-width:1px; 272 | border-color: transparent; 273 | } 274 | QCheckBox::indicator:checked { 275 | 276 | height: 10px; 277 | width: 10px; 278 | border-style:solid; 279 | border-width: 1px; 280 | border-color: #4fa08b; 281 | color: #000000; 282 | background-color: qradialgradient(cx:0.4, cy:0.4, radius: 1.5,fx:0, fy:0, stop:0 #1e282c, stop:0.3 #1e282c, stop:0.4 #4fa08b, stop:0.5 #1e282c, stop:1 #1e282c); 283 | } 284 | QCheckBox::indicator:unchecked { 285 | 286 | height: 10px; 287 | width: 10px; 288 | border-style:solid; 289 | border-width: 1px; 290 | border-color: #4fa08b; 291 | color: #000000; 292 | } 293 | QRadioButton { 294 | color: #d3dae3; 295 | padding: 1px; 296 | } 297 | QRadioButton::indicator:checked { 298 | height: 10px; 299 | width: 10px; 300 | border-style:solid; 301 | border-radius:5px; 302 | border-width: 1px; 303 | border-color: #4fa08b; 304 | color: #a9b7c6; 305 | background-color: qradialgradient(cx:0.5, cy:0.5, radius:0.4,fx:0.5, fy:0.5, stop:0 #4fa08b, stop:1 #1e282c); 306 | } 307 | QRadioButton::indicator:!checked { 308 | height: 10px; 309 | width: 10px; 310 | border-style:solid; 311 | border-radius:5px; 312 | border-width: 1px; 313 | border-color: #4fa08b; 314 | color: #a9b7c6; 315 | background-color: transparent; 316 | } 317 | QStatusBar { 318 | color:#027f7f; 319 | } 320 | QSpinBox { 321 | color: #d3dae3; 322 | background-color: #222b2e; 323 | border-width: 1px; 324 | border-style: solid; 325 | border-color: #4fa08b; 326 | } 327 | QDoubleSpinBox { 328 | color: #d3dae3; 329 | background-color: #222b2e; 330 | border-width: 1px; 331 | border-style: solid; 332 | border-color: #4fa08b; 333 | } 334 | QTimeEdit { 335 | color: #d3dae3; 336 | background-color: #222b2e; 337 | border-width: 1px; 338 | border-style: solid; 339 | border-color: #4fa08b; 340 | } 341 | QDateTimeEdit { 342 | color: #d3dae3; 343 | background-color: #222b2e; 344 | border-width: 1px; 345 | border-style: solid; 346 | border-color: #4fa08b; 347 | } 348 | QDateEdit { 349 | color: #d3dae3; 350 | background-color: #222b2e; 351 | border-width: 1px; 352 | border-style: solid; 353 | border-color: #4fa08b; 354 | } 355 | QFontComboBox { 356 | color: #d3dae3; 357 | background-color: #222b2e; 358 | border-width: 1px; 359 | border-style: solid; 360 | border-color: #4fa08b; 361 | } 362 | QComboBox { 363 | color: #d3dae3; 364 | background-color: #222b2e; 365 | border-width: 1px; 366 | border-style: solid; 367 | border-color: #4fa08b; 368 | } 369 | 370 | QDial { 371 | background: #16a085; 372 | } 373 | 374 | QToolBox { 375 | color: #a9b7c6; 376 | background-color: #222b2e; 377 | } 378 | QToolBox::tab { 379 | color: #a9b7c6; 380 | background-color:#222b2e; 381 | } 382 | QToolBox::tab:selected { 383 | color: #FFFFFF; 384 | background-color:#222b2e; 385 | } 386 | QScrollArea { 387 | color: #FFFFFF; 388 | background-color:#222b2e; 389 | } 390 | QSlider::groove:horizontal { 391 | height: 5px; 392 | background-color: #52595d; 393 | } 394 | QSlider::groove:vertical { 395 | width: 5px; 396 | background-color: #52595d; 397 | } 398 | QSlider::handle:horizontal { 399 | background: #1a2224; 400 | border-style: solid; 401 | border-width: 1px; 402 | border-color: rgb(207,207,207); 403 | width: 12px; 404 | margin: -5px 0; 405 | border-radius: 7px; 406 | } 407 | QSlider::handle:vertical { 408 | background: #1a2224; 409 | border-style: solid; 410 | border-width: 1px; 411 | border-color: rgb(207,207,207); 412 | height: 12px; 413 | margin: 0 -5px; 414 | border-radius: 7px; 415 | } 416 | QSlider::add-page:horizontal { 417 | background: #52595d; 418 | } 419 | QSlider::add-page:vertical { 420 | background: #52595d; 421 | } 422 | QSlider::sub-page:horizontal { 423 | background-color: #15433a; 424 | } 425 | QSlider::sub-page:vertical { 426 | background-color: #15433a; 427 | } 428 | QScrollBar:horizontal { 429 | max-height: 10px; 430 | border: 1px transparent grey; 431 | margin: 0px 20px 0px 20px; 432 | background: transparent; 433 | } 434 | QScrollBar:vertical { 435 | max-width: 10px; 436 | border: 1px transparent grey; 437 | margin: 20px 0px 20px 0px; 438 | background: transparent; 439 | } 440 | QScrollBar::handle:horizontal { 441 | background: #52595d; 442 | border-style: transparent; 443 | border-radius: 4px; 444 | min-width: 25px; 445 | } 446 | QScrollBar::handle:horizontal:hover { 447 | background: #58a492; 448 | border-style: transparent; 449 | border-radius: 4px; 450 | min-width: 25px; 451 | } 452 | QScrollBar::handle:vertical { 453 | background: #52595d; 454 | border-style: transparent; 455 | border-radius: 4px; 456 | min-height: 25px; 457 | } 458 | QScrollBar::handle:vertical:hover { 459 | background: #58a492; 460 | border-style: transparent; 461 | border-radius: 4px; 462 | min-height: 25px; 463 | } 464 | QScrollBar::add-line:horizontal { 465 | border: 2px transparent grey; 466 | border-top-right-radius: 4px; 467 | border-bottom-right-radius: 4px; 468 | background: #15433a; 469 | width: 20px; 470 | subcontrol-position: right; 471 | subcontrol-origin: margin; 472 | } 473 | QScrollBar::add-line:horizontal:pressed { 474 | border: 2px transparent grey; 475 | border-top-right-radius: 4px; 476 | border-bottom-right-radius: 4px; 477 | background: rgb(181,181,181); 478 | width: 20px; 479 | subcontrol-position: right; 480 | subcontrol-origin: margin; 481 | } 482 | QScrollBar::add-line:vertical { 483 | border: 2px transparent grey; 484 | border-bottom-left-radius: 4px; 485 | border-bottom-right-radius: 4px; 486 | background: #15433a; 487 | height: 20px; 488 | subcontrol-position: bottom; 489 | subcontrol-origin: margin; 490 | } 491 | QScrollBar::add-line:vertical:pressed { 492 | border: 2px transparent grey; 493 | border-bottom-left-radius: 4px; 494 | border-bottom-right-radius: 4px; 495 | background: rgb(181,181,181); 496 | height: 20px; 497 | subcontrol-position: bottom; 498 | subcontrol-origin: margin; 499 | } 500 | QScrollBar::sub-line:horizontal { 501 | border: 2px transparent grey; 502 | border-top-left-radius: 4px; 503 | border-bottom-left-radius: 4px; 504 | background: #15433a; 505 | width: 20px; 506 | subcontrol-position: left; 507 | subcontrol-origin: margin; 508 | } 509 | QScrollBar::sub-line:horizontal:pressed { 510 | border: 2px transparent grey; 511 | border-top-left-radius: 4px; 512 | border-bottom-left-radius: 4px; 513 | background: rgb(181,181,181); 514 | width: 20px; 515 | subcontrol-position: left; 516 | subcontrol-origin: margin; 517 | } 518 | QScrollBar::sub-line:vertical { 519 | border: 2px transparent grey; 520 | border-top-left-radius: 4px; 521 | border-top-right-radius: 4px; 522 | background: #15433a; 523 | height: 20px; 524 | subcontrol-position: top; 525 | subcontrol-origin: margin; 526 | } 527 | QScrollBar::sub-line:vertical:pressed { 528 | border: 2px transparent grey; 529 | border-top-left-radius: 4px; 530 | border-top-right-radius: 4px; 531 | background: rgb(181,181,181); 532 | height: 20px; 533 | subcontrol-position: top; 534 | subcontrol-origin: margin; 535 | } 536 | 537 | QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal { 538 | background: none; 539 | } 540 | QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { 541 | background: none; 542 | } 543 | 544 | 545 | 546 | 547 | 548 | 549 | 0 550 | 0 551 | 801 552 | 581 553 | 554 | 555 | 556 | 0 557 | 558 | 559 | false 560 | 561 | 562 | false 563 | 564 | 565 | false 566 | 567 | 568 | 569 | Main 570 | 571 | 572 | 573 | 574 | 450 575 | 420 576 | 300 577 | 50 578 | 579 | 580 | 581 | New Image 582 | 583 | 584 | 585 | 586 | 587 | 450 588 | 50 589 | 300 590 | 300 591 | 592 | 593 | 594 | Add Image 595 | 596 | 597 | true 598 | 599 | 600 | 0 601 | 602 | 603 | 604 | 605 | 606 | 290 607 | 40 608 | 130 609 | 51 610 | 611 | 612 | 613 | Show Database 614 | 615 | 616 | 617 | 618 | false 619 | 620 | 621 | 622 | 20 623 | 40 624 | 250 625 | 51 626 | 627 | 628 | 629 | Reconaissance 630 | 631 | 632 | 633 | 634 | false 635 | 636 | 637 | 638 | 20 639 | 120 640 | 190 641 | 34 642 | 643 | 644 | 645 | Detection 646 | 647 | 648 | 649 | 650 | false 651 | 652 | 653 | 654 | 230 655 | 120 656 | 190 657 | 34 658 | 659 | 660 | 661 | Prétraitements 662 | 663 | 664 | 665 | 666 | false 667 | 668 | 669 | 670 | 20 671 | 170 672 | 90 673 | 35 674 | 675 | 676 | 677 | Visage 678 | 679 | 680 | 681 | 682 | false 683 | 684 | 685 | 686 | 120 687 | 170 688 | 90 689 | 35 690 | 691 | 692 | 693 | Nez 694 | 695 | 696 | 697 | 698 | false 699 | 700 | 701 | 702 | 120 703 | 210 704 | 90 705 | 35 706 | 707 | 708 | 709 | Bouche 710 | 711 | 712 | 713 | 714 | false 715 | 716 | 717 | 718 | 20 719 | 210 720 | 90 721 | 35 722 | 723 | 724 | 725 | Yeux 726 | 727 | 728 | 729 | 730 | false 731 | 732 | 733 | 734 | 330 735 | 210 736 | 90 737 | 35 738 | 739 | 740 | 741 | Denoising 742 | 743 | 744 | 745 | 746 | false 747 | 748 | 749 | 750 | 230 751 | 210 752 | 90 753 | 35 754 | 755 | 756 | 757 | Median 758 | 759 | 760 | 761 | 762 | false 763 | 764 | 765 | 766 | 330 767 | 170 768 | 90 769 | 35 770 | 771 | 772 | 773 | Egaliser 774 | 775 | 776 | 777 | 778 | false 779 | 780 | 781 | 782 | 230 783 | 170 784 | 90 785 | 35 786 | 787 | 788 | 789 | Normaliser 790 | 791 | 792 | 793 | 794 | false 795 | 796 | 797 | 798 | 230 799 | 280 800 | 190 801 | 34 802 | 803 | 804 | 805 | Miroir 806 | 807 | 808 | 809 | 810 | false 811 | 812 | 813 | 814 | 20 815 | 280 816 | 190 817 | 34 818 | 819 | 820 | 821 | Rotation 822 | 823 | 824 | 825 | 826 | 827 | 20 828 | 100 829 | 400 830 | 20 831 | 832 | 833 | 834 | Qt::Horizontal 835 | 836 | 837 | 838 | 839 | 840 | 20 841 | 250 842 | 400 843 | 20 844 | 845 | 846 | 847 | Qt::Horizontal 848 | 849 | 850 | 851 | 852 | 853 | 20 854 | 260 855 | 400 856 | 20 857 | 858 | 859 | 860 | Qt::Horizontal 861 | 862 | 863 | 864 | 865 | 866 | 20 867 | 90 868 | 400 869 | 20 870 | 871 | 872 | 873 | Qt::Horizontal 874 | 875 | 876 | 877 | 878 | 879 | 20 880 | 340 881 | 400 882 | 140 883 | 884 | 885 | 886 | Qlabel{ 887 | background: qlineargradient(spread:pad, x1:0, y1:1, x2:0, y2:0, stop:0 rgba(0, 0, 0, 255), stop:0.05 rgba(14, 8, 73, 255), stop:0.36 rgba(28, 17, 145, 255), stop:0.6 rgba(126, 14, 81, 255), stop:0.75 rgba(234, 11, 11, 255), stop:0.79 rgba(244, 70, 5, 255), stop:0.86 rgba(255, 136, 0, 255), stop:0.935 rgba(239, 236, 55, 255))} 888 | 889 | 890 | Histogramme 891 | 892 | 893 | 894 | 895 | 896 | true 897 | 898 | 899 | Report 900 | 901 | 902 | 903 | 904 | 905 | 906 | 907 | 0 908 | 0 909 | 800 910 | 18 911 | 912 | 913 | 914 | 915 | 916 | 917 | 918 | 919 | -------------------------------------------------------------------------------- /ressources/ui/AMOLED.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWindow 4 | 5 | 6 | 7 | 0 8 | 0 9 | 800 10 | 600 11 | 12 | 13 | 14 | MainWindow 15 | 16 | 17 | * { 18 | background-color: #181818; 19 | } 20 | QMainWindow { 21 | background-color:#000000; 22 | } 23 | QDialog { 24 | background-color:#000000; 25 | } 26 | QColorDialog { 27 | background-color:#000000; 28 | } 29 | QTextEdit { 30 | background-color:#000000; 31 | color: #a9b7c6; 32 | } 33 | QPlainTextEdit { 34 | selection-background-color:#f39c12; 35 | background-color:#000000; 36 | border-style: solid; 37 | border-top-color: transparent; 38 | border-right-color: transparent; 39 | border-left-color: transparent; 40 | border-bottom-color: transparent; 41 | border-width: 1px; 42 | color: #a9b7c6; 43 | } 44 | QPushButton{ 45 | border-style: solid; 46 | border-top-color: transparent; 47 | border-right-color: transparent; 48 | border-left-color: transparent; 49 | border-bottom-color: transparent; 50 | border-width: 1px; 51 | border-style: solid; 52 | color: #a9b7c6; 53 | padding: 2px; 54 | background-color: #000000; 55 | } 56 | QPushButton::default{ 57 | border-style: solid; 58 | border-top-color: transparent; 59 | border-right-color: transparent; 60 | border-left-color: transparent; 61 | border-bottom-color: #e67e22; 62 | border-width: 1px; 63 | color: #a9b7c6; 64 | padding: 2px; 65 | background-color: #000000; 66 | } 67 | QPushButton:hover{ 68 | border-style: solid; 69 | border-top-color: transparent; 70 | border-right-color: transparent; 71 | border-left-color: transparent; 72 | border-bottom-color: #e67e22; 73 | border-bottom-width: 1px; 74 | border-bottom-radius: 6px; 75 | border-style: solid; 76 | color: #FFFFFF; 77 | padding-bottom: 2px; 78 | background-color: #000000; 79 | } 80 | QPushButton:pressed{ 81 | border-style: solid; 82 | border-top-color: transparent; 83 | border-right-color: transparent; 84 | border-left-color: transparent; 85 | border-bottom-color: #e67e22; 86 | border-bottom-width: 2px; 87 | border-bottom-radius: 6px; 88 | border-style: solid; 89 | color: #e67e22; 90 | padding-bottom: 1px; 91 | background-color: #000000; 92 | } 93 | QPushButton:disabled{ 94 | border-style: solid; 95 | border-top-color: transparent; 96 | border-right-color: transparent; 97 | border-left-color: transparent; 98 | border-bottom-color: transparent; 99 | border-bottom-width: 2px; 100 | border-bottom-radius: 6px; 101 | border-style: solid; 102 | color: #808086; 103 | padding-bottom: 1px; 104 | background-color: #000000; 105 | } 106 | QToolButton { 107 | border-style: solid; 108 | border-top-color: transparent; 109 | border-right-color: transparent; 110 | border-left-color: transparent; 111 | border-bottom-color: #e67e22; 112 | border-bottom-width: 1px; 113 | border-style: solid; 114 | color: #a9b7c6; 115 | padding: 2px; 116 | background-color: #000000; 117 | } 118 | QToolButton:hover{ 119 | border-style: solid; 120 | border-top-color: transparent; 121 | border-right-color: transparent; 122 | border-left-color: transparent; 123 | border-bottom-color: #e67e22; 124 | border-bottom-width: 2px; 125 | border-bottom-radius: 6px; 126 | border-style: solid; 127 | color: #FFFFFF; 128 | padding-bottom: 1px; 129 | background-color: #000000; 130 | } 131 | QLineEdit { 132 | border-width: 1px; border-radius: 4px; 133 | border-color: rgb(58, 58, 58); 134 | border-style: inset; 135 | padding: 0 8px; 136 | color: #a9b7c6; 137 | background:#000000; 138 | selection-background-color:#007b50; 139 | selection-color: #FFFFFF; 140 | } 141 | QLabel { 142 | color: #a9b7c6; 143 | } 144 | QLCDNumber { 145 | color: #e67e22; 146 | } 147 | QProgressBar { 148 | text-align: center; 149 | color: rgb(240, 240, 240); 150 | border-width: 1px; 151 | border-radius: 10px; 152 | border-color: rgb(58, 58, 58); 153 | border-style: inset; 154 | background-color:#000000; 155 | } 156 | QProgressBar::chunk { 157 | background-color: #e67e22; 158 | border-radius: 5px; 159 | } 160 | QMenu{ 161 | background-color:#000000; 162 | } 163 | QMenuBar { 164 | background:rgb(0, 0, 0); 165 | color: #a9b7c6; 166 | } 167 | QMenuBar::item { 168 | spacing: 3px; 169 | padding: 1px 4px; 170 | background: transparent; 171 | } 172 | QMenuBar::item:selected { 173 | border-style: solid; 174 | border-top-color: transparent; 175 | border-right-color: transparent; 176 | border-left-color: transparent; 177 | border-bottom-color: #e67e22; 178 | border-bottom-width: 1px; 179 | border-bottom-radius: 6px; 180 | border-style: solid; 181 | color: #FFFFFF; 182 | padding-bottom: 0px; 183 | background-color: #000000; 184 | } 185 | QMenu::item:selected { 186 | border-style: solid; 187 | border-top-color: transparent; 188 | border-right-color: transparent; 189 | border-left-color: #e67e22; 190 | border-bottom-color: transparent; 191 | border-left-width: 2px; 192 | color: #FFFFFF; 193 | padding-left:15px; 194 | padding-top:4px; 195 | padding-bottom:4px; 196 | padding-right:7px; 197 | background-color:#000000; 198 | } 199 | QMenu::item { 200 | border-style: solid; 201 | border-top-color: transparent; 202 | border-right-color: transparent; 203 | border-left-color: transparent; 204 | border-bottom-color: transparent; 205 | border-bottom-width: 1px; 206 | border-style: solid; 207 | color: #a9b7c6; 208 | padding-left:17px; 209 | padding-top:4px; 210 | padding-bottom:4px; 211 | padding-right:7px; 212 | background-color:#000000; 213 | } 214 | QTabWidget { 215 | color:rgb(0,0,0); 216 | background-color:#000000; 217 | } 218 | QTabWidget::pane { 219 | border-color: rgb(77,77,77); 220 | background-color:#000000; 221 | border-style: solid; 222 | border-width: 1px; 223 | border-radius: 6px; 224 | } 225 | QTabBar::tab { 226 | border-style: solid; 227 | border-top-color: transparent; 228 | border-right-color: transparent; 229 | border-left-color: transparent; 230 | border-bottom-color: transparent; 231 | border-bottom-width: 1px; 232 | border-style: solid; 233 | color: #808086; 234 | padding: 3px; 235 | margin-left:3px; 236 | background-color:#000000; 237 | } 238 | QTabBar::tab:selected, QTabBar::tab:last:selected, QTabBar::tab:hover { 239 | border-style: solid; 240 | border-top-color: transparent; 241 | border-right-color: transparent; 242 | border-left-color: transparent; 243 | border-bottom-color: #e67e22; 244 | border-bottom-width: 2px; 245 | border-style: solid; 246 | color: #FFFFFF; 247 | padding-left: 3px; 248 | padding-bottom: 2px; 249 | margin-left:3px; 250 | background-color:#000000; 251 | } 252 | 253 | QCheckBox { 254 | color: #a9b7c6; 255 | padding: 2px; 256 | } 257 | QCheckBox:disabled { 258 | color: #808086; 259 | padding: 2px; 260 | } 261 | 262 | QCheckBox:hover { 263 | border-radius:4px; 264 | border-style:solid; 265 | padding-left: 1px; 266 | padding-right: 1px; 267 | padding-bottom: 1px; 268 | padding-top: 1px; 269 | border-width:1px; 270 | border-color: rgb(87, 97, 106); 271 | background-color:#000000; 272 | } 273 | QCheckBox::indicator:checked { 274 | 275 | height: 10px; 276 | width: 10px; 277 | border-style:solid; 278 | border-width: 1px; 279 | border-color: #e67e22; 280 | color: #a9b7c6; 281 | background-color: #e67e22; 282 | } 283 | QCheckBox::indicator:unchecked { 284 | 285 | height: 10px; 286 | width: 10px; 287 | border-style:solid; 288 | border-width: 1px; 289 | border-color: #e67e22; 290 | color: #a9b7c6; 291 | background-color: transparent; 292 | } 293 | QRadioButton { 294 | color: #a9b7c6; 295 | background-color:#000000; 296 | padding: 1px; 297 | } 298 | QRadioButton::indicator:checked { 299 | height: 10px; 300 | width: 10px; 301 | border-style:solid; 302 | border-radius:5px; 303 | border-width: 1px; 304 | border-color: #e67e22; 305 | color: #a9b7c6; 306 | background-color: #e67e22; 307 | } 308 | QRadioButton::indicator:!checked { 309 | height: 10px; 310 | width: 10px; 311 | border-style:solid; 312 | border-radius:5px; 313 | border-width: 1px; 314 | border-color: #e67e22; 315 | color: #a9b7c6; 316 | background-color: transparent; 317 | } 318 | QStatusBar { 319 | color:#027f7f; 320 | } 321 | QSpinBox { 322 | color: #a9b7c6; 323 | background-color:#000000; 324 | } 325 | QDoubleSpinBox { 326 | color: #a9b7c6; 327 | background-color:#000000; 328 | } 329 | QTimeEdit { 330 | color: #a9b7c6; 331 | background-color:#000000; 332 | } 333 | QDateTimeEdit { 334 | color: #a9b7c6; 335 | background-color:#000000; 336 | } 337 | QDateEdit { 338 | color: #a9b7c6; 339 | background-color:#000000; 340 | } 341 | QComboBox { 342 | color: #a9b7c6; 343 | background: #1e1d23; 344 | } 345 | QComboBox:editable { 346 | background: #1e1d23; 347 | color: #a9b7c6; 348 | selection-background-color:#000000; 349 | } 350 | QComboBox QAbstractItemView { 351 | color: #a9b7c6; 352 | background: #1e1d23; 353 | selection-color: #FFFFFF; 354 | selection-background-color:#000000; 355 | } 356 | QComboBox:!editable:on, QComboBox::drop-down:editable:on { 357 | color: #a9b7c6; 358 | background: #1e1d23; 359 | } 360 | QFontComboBox { 361 | color: #a9b7c6; 362 | background-color:#000000; 363 | } 364 | QToolBox { 365 | color: #a9b7c6; 366 | background-color:#000000; 367 | } 368 | QToolBox::tab { 369 | color: #a9b7c6; 370 | background-color:#000000; 371 | } 372 | QToolBox::tab:selected { 373 | color: #FFFFFF; 374 | background-color:#000000; 375 | } 376 | QScrollArea { 377 | color: #FFFFFF; 378 | background-color:#000000; 379 | } 380 | QSlider::groove:horizontal { 381 | height: 5px; 382 | background: #e67e22; 383 | } 384 | QSlider::groove:vertical { 385 | width: 5px; 386 | background: #e67e22; 387 | } 388 | QSlider::handle:horizontal { 389 | background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #b4b4b4, stop:1 #8f8f8f); 390 | border: 1px solid #5c5c5c; 391 | width: 14px; 392 | margin: -5px 0; 393 | border-radius: 7px; 394 | } 395 | QSlider::handle:vertical { 396 | background: qlineargradient(x1:1, y1:1, x2:0, y2:0, stop:0 #b4b4b4, stop:1 #8f8f8f); 397 | border: 1px solid #5c5c5c; 398 | height: 14px; 399 | margin: 0 -5px; 400 | border-radius: 7px; 401 | } 402 | QSlider::add-page:horizontal { 403 | background: white; 404 | } 405 | QSlider::add-page:vertical { 406 | background: white; 407 | } 408 | QSlider::sub-page:horizontal { 409 | background: #e67e22; 410 | } 411 | QSlider::sub-page:vertical { 412 | background: #e67e22; 413 | } 414 | QScrollBar:horizontal { 415 | max-height: 20px; 416 | background: rgb(0,0,0); 417 | border: 1px transparent grey; 418 | margin: 0px 20px 0px 20px; 419 | } 420 | QScrollBar::handle:horizontal { 421 | background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgba(255, 0, 0, 0), stop:0.7 rgba(255, 0, 0, 0), stop:0.71 rgb(230, 126, 34), stop:1 rgb(230, 126, 34)); 422 | border-style: solid; 423 | border-width: 1px; 424 | border-color: rgb(0,0,0); 425 | min-width: 25px; 426 | } 427 | QScrollBar::handle:horizontal:hover { 428 | background: rgb(230, 126, 34); 429 | border-style: solid; 430 | border-width: 1px; 431 | border-color: rgb(0,0,0); 432 | min-width: 25px; 433 | } 434 | QScrollBar::add-line:horizontal { 435 | border: 1px solid; 436 | border-color: rgb(0,0,0); 437 | background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgba(255, 0, 0, 0), stop:0.7 rgba(255, 0, 0, 0), stop:0.71 rgb(230, 126, 34), stop:1 rgb(230, 126, 34)); 438 | width: 20px; 439 | subcontrol-position: right; 440 | subcontrol-origin: margin; 441 | } 442 | QScrollBar::add-line:horizontal:hover { 443 | border: 1px solid; 444 | border-color: rgb(0,0,0); 445 | border-radius: 8px; 446 | background: rgb(230, 126, 34); 447 | height: 16px; 448 | width: 16px; 449 | subcontrol-position: right; 450 | subcontrol-origin: margin; 451 | } 452 | QScrollBar::add-line:horizontal:pressed { 453 | border: 1px solid; 454 | border-color: grey; 455 | border-radius: 8px; 456 | background: rgb(230, 126, 34); 457 | height: 16px; 458 | width: 16px; 459 | subcontrol-position: right; 460 | subcontrol-origin: margin; 461 | } 462 | QScrollBar::sub-line:horizontal { 463 | border: 1px solid; 464 | border-color: rgb(0,0,0); 465 | background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgba(255, 0, 0, 0), stop:0.7 rgba(255, 0, 0, 0), stop:0.71 rgb(230, 126, 34), stop:1 rgb(230, 126, 34)); 466 | width: 20px; 467 | subcontrol-position: left; 468 | subcontrol-origin: margin; 469 | } 470 | QScrollBar::sub-line:horizontal:hover { 471 | border: 1px solid; 472 | border-color: rgb(0,0,0); 473 | border-radius: 8px; 474 | background: rgb(230, 126, 34); 475 | height: 16px; 476 | width: 16px; 477 | subcontrol-position: left; 478 | subcontrol-origin: margin; 479 | } 480 | QScrollBar::sub-line:horizontal:pressed { 481 | border: 1px solid; 482 | border-color: grey; 483 | border-radius: 8px; 484 | background: rgb(230, 126, 34); 485 | height: 16px; 486 | width: 16px; 487 | subcontrol-position: left; 488 | subcontrol-origin: margin; 489 | } 490 | QScrollBar::left-arrow:horizontal { 491 | border: 1px transparent grey; 492 | border-radius: 3px; 493 | width: 6px; 494 | height: 6px; 495 | background: rgb(0,0,0); 496 | } 497 | QScrollBar::right-arrow:horizontal { 498 | border: 1px transparent grey; 499 | border-radius: 3px; 500 | width: 6px; 501 | height: 6px; 502 | background: rgb(0,0,0); 503 | } 504 | QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal { 505 | background: none; 506 | } 507 | QScrollBar:vertical { 508 | max-width: 20px; 509 | background: rgb(0,0,0); 510 | border: 1px transparent grey; 511 | margin: 20px 0px 20px 0px; 512 | } 513 | QScrollBar::add-line:vertical { 514 | border: 1px solid; 515 | border-color: rgb(0,0,0); 516 | background-color: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 rgba(255, 0, 0, 0), stop:0.7 rgba(255, 0, 0, 0), stop:0.71 rgb(230, 126, 34), stop:1 rgb(230, 126, 34)); 517 | height: 20px; 518 | subcontrol-position: bottom; 519 | subcontrol-origin: margin; 520 | } 521 | QScrollBar::add-line:vertical:hover { 522 | border: 1px solid; 523 | border-color: rgb(0,0,0); 524 | border-radius: 8px; 525 | background: rgb(230, 126, 34); 526 | height: 16px; 527 | width: 16px; 528 | subcontrol-position: bottom; 529 | subcontrol-origin: margin; 530 | } 531 | QScrollBar::add-line:vertical:pressed { 532 | border: 1px solid; 533 | border-color: grey; 534 | border-radius: 8px; 535 | background: rgb(230, 126, 34); 536 | height: 16px; 537 | width: 16px; 538 | subcontrol-position: bottom; 539 | subcontrol-origin: margin; 540 | } 541 | QScrollBar::sub-line:vertical { 542 | border: 1px solid; 543 | border-color: rgb(0,0,0); 544 | background-color: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 rgba(255, 0, 0, 0), stop:0.7 rgba(255, 0, 0, 0), stop:0.71 rgb(230, 126, 34), stop:1 rgb(230, 126, 34)); 545 | height: 20px; 546 | subcontrol-position: top; 547 | subcontrol-origin: margin; 548 | } 549 | QScrollBar::sub-line:vertical:hover { 550 | border: 1px solid; 551 | border-color: rgb(0,0,0); 552 | border-radius: 8px; 553 | background: rgb(230, 126, 34); 554 | height: 16px; 555 | width: 16px; 556 | subcontrol-position: top; 557 | subcontrol-origin: margin; 558 | } 559 | QScrollBar::sub-line:vertical:pressed { 560 | border: 1px solid; 561 | border-color: grey; 562 | border-radius: 8px; 563 | background: rgb(230, 126, 34); 564 | height: 16px; 565 | width: 16px; 566 | subcontrol-position: top; 567 | subcontrol-origin: margin; 568 | } 569 | QScrollBar::handle:vertical { 570 | background-color: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 rgba(255, 0, 0, 0), stop:0.7 rgba(255, 0, 0, 0), stop:0.71 rgb(230, 126, 34), stop:1 rgb(230, 126, 34)); 571 | border-style: solid; 572 | border-width: 1px; 573 | border-color: rgb(0,0,0); 574 | min-height: 25px; 575 | } 576 | QScrollBar::handle:vertical:hover { 577 | background: rgb(230, 126, 34); 578 | border-style: solid; 579 | border-width: 1px; 580 | border-color: rgb(0,0,0); 581 | min-heigth: 25px; 582 | } 583 | QScrollBar::up-arrow:vertical { 584 | border: 1px transparent grey; 585 | border-radius: 3px; 586 | width: 6px; 587 | height: 6px; 588 | background: rgb(0,0,0); 589 | } 590 | QScrollBar::down-arrow:vertical { 591 | border: 1px transparent grey; 592 | border-radius: 3px; 593 | width: 6px; 594 | height: 6px; 595 | background: rgb(0,0,0); 596 | } 597 | QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { 598 | background: none; 599 | } 600 | 601 | 602 | 603 | 604 | 605 | 606 | 0 607 | 0 608 | 801 609 | 581 610 | 611 | 612 | 613 | 0 614 | 615 | 616 | false 617 | 618 | 619 | false 620 | 621 | 622 | false 623 | 624 | 625 | 626 | Main 627 | 628 | 629 | 630 | 631 | 450 632 | 420 633 | 300 634 | 50 635 | 636 | 637 | 638 | New Image 639 | 640 | 641 | 642 | 643 | 644 | 450 645 | 50 646 | 300 647 | 300 648 | 649 | 650 | 651 | Add Image 652 | 653 | 654 | true 655 | 656 | 657 | 0 658 | 659 | 660 | 661 | 662 | 663 | 290 664 | 40 665 | 130 666 | 51 667 | 668 | 669 | 670 | Show Database 671 | 672 | 673 | 674 | 675 | false 676 | 677 | 678 | 679 | 20 680 | 40 681 | 250 682 | 51 683 | 684 | 685 | 686 | Reconaissance 687 | 688 | 689 | 690 | 691 | false 692 | 693 | 694 | 695 | 20 696 | 120 697 | 190 698 | 34 699 | 700 | 701 | 702 | Detection 703 | 704 | 705 | 706 | 707 | false 708 | 709 | 710 | 711 | 230 712 | 120 713 | 190 714 | 34 715 | 716 | 717 | 718 | Prétraitements 719 | 720 | 721 | 722 | 723 | false 724 | 725 | 726 | 727 | 20 728 | 170 729 | 90 730 | 35 731 | 732 | 733 | 734 | Visage 735 | 736 | 737 | 738 | 739 | false 740 | 741 | 742 | 743 | 120 744 | 170 745 | 90 746 | 35 747 | 748 | 749 | 750 | Nez 751 | 752 | 753 | 754 | 755 | false 756 | 757 | 758 | 759 | 120 760 | 210 761 | 90 762 | 35 763 | 764 | 765 | 766 | Bouche 767 | 768 | 769 | 770 | 771 | false 772 | 773 | 774 | 775 | 20 776 | 210 777 | 90 778 | 35 779 | 780 | 781 | 782 | Yeux 783 | 784 | 785 | 786 | 787 | false 788 | 789 | 790 | 791 | 330 792 | 210 793 | 90 794 | 35 795 | 796 | 797 | 798 | Denoising 799 | 800 | 801 | 802 | 803 | false 804 | 805 | 806 | 807 | 230 808 | 210 809 | 90 810 | 35 811 | 812 | 813 | 814 | Median 815 | 816 | 817 | 818 | 819 | false 820 | 821 | 822 | 823 | 330 824 | 170 825 | 90 826 | 35 827 | 828 | 829 | 830 | Egaliser 831 | 832 | 833 | 834 | 835 | false 836 | 837 | 838 | 839 | 230 840 | 170 841 | 90 842 | 35 843 | 844 | 845 | 846 | Normaliser 847 | 848 | 849 | 850 | 851 | false 852 | 853 | 854 | 855 | 230 856 | 280 857 | 190 858 | 34 859 | 860 | 861 | 862 | Miroir 863 | 864 | 865 | 866 | 867 | false 868 | 869 | 870 | 871 | 20 872 | 280 873 | 190 874 | 34 875 | 876 | 877 | 878 | Rotation 879 | 880 | 881 | 882 | 883 | 884 | 20 885 | 100 886 | 400 887 | 20 888 | 889 | 890 | 891 | Qt::Horizontal 892 | 893 | 894 | 895 | 896 | 897 | 20 898 | 250 899 | 400 900 | 20 901 | 902 | 903 | 904 | Qt::Horizontal 905 | 906 | 907 | 908 | 909 | 910 | 20 911 | 260 912 | 400 913 | 20 914 | 915 | 916 | 917 | Qt::Horizontal 918 | 919 | 920 | 921 | 922 | 923 | 20 924 | 90 925 | 400 926 | 20 927 | 928 | 929 | 930 | Qt::Horizontal 931 | 932 | 933 | 934 | 935 | 936 | 20 937 | 340 938 | 400 939 | 140 940 | 941 | 942 | 943 | Qlabel{ 944 | background: qlineargradient(spread:pad, x1:0, y1:1, x2:0, y2:0, stop:0 rgba(0, 0, 0, 255), stop:0.05 rgba(14, 8, 73, 255), stop:0.36 rgba(28, 17, 145, 255), stop:0.6 rgba(126, 14, 81, 255), stop:0.75 rgba(234, 11, 11, 255), stop:0.79 rgba(244, 70, 5, 255), stop:0.86 rgba(255, 136, 0, 255), stop:0.935 rgba(239, 236, 55, 255))} 945 | 946 | 947 | Histogramme 948 | 949 | 950 | 951 | 952 | 953 | true 954 | 955 | 956 | Report 957 | 958 | 959 | 960 | 961 | 962 | 963 | 964 | 0 965 | 0 966 | 800 967 | 18 968 | 969 | 970 | 971 | 972 | 973 | 974 | 975 | 976 | --------------------------------------------------------------------------------