Beispiel #1
0
def main():
    parser = argparse.ArgumentParser(
        description='Recognize faces from an image file')
    parser.add_argument('input', type=str, help='Input file')
    parser.add_argument('--output',
                        '-o',
                        type=str,
                        help='Output file (default: none)')
    args = parser.parse_args()

    img = cv2.imread(str(Path(args.input)))
    faces = recognize_face(img)
    print('found faces:', len(faces))
    draw_rectangles(img, faces)

    if args.output:
        print('Saving image ...')
        cv2.imwrite(args.output, img)

    app = QApplication([])

    window = ImageArea()
    window.setCVImage(img)
    window.show()

    app.exit(app.exec_())
Beispiel #2
0
def get_reference_dict(calibration_file_path=False):

    if not calibration_file_path:
        app = QApplication(sys.argv)
        file_dialog = QFileDialog()
        file_dialog.setWindowFlags(Qt.WindowStaysOnTopHint)
        file_path = file_dialog.getOpenFileName(None,
                                                "FAMES REF FILE",
                                                filter="*.cdf")[0]
        file_dialog.close()
        app.exit()
    else:
        file_path = calibration_file_path

    if not file_path: return None

    else:

        gcms_ref_obj = get_gcms(file_path)
        sql_obj = start_sql_from_file()
        rt_ri_pairs = get_rt_ri_pairs(gcms_ref_obj, sql_obj=sql_obj)
        # !!!!!! READ !!!!! use the previous two lines if db/pnnl_lowres_gcms_compounds.sqlite does not exist
        # and comment the next line
        #rt_ri_pairs = get_rt_ri_pairs(gcms_ref_obj)

        return rt_ri_pairs, file_path
Beispiel #3
0
def create_app():
    app = QApplication([])

    widget = MainWidget()
    widget.resize(1200, 800)
    widget.show()

    app.exit(app.exec_())
Beispiel #4
0
class GUIApplication:
    def __init__(self, app):
        self.started = False
        self.app = app
        self.args = app.args
        self.config = app.config
        self.library = app.library
        self.workplace = app.workplace
        self.analyzer = app.analyzer
        logging.debug("qt_argv: %r", self.args.qt_argv)
        self.qapp = QApplication(self.args.qt_argv)
        self.qapp.setApplicationName("Sample Drawer")
        for path in RESOURCE_FILENAMES:
            if os.path.exists(path):
                logger.debug("Loading resources from %r", path)
                QResource.registerResource(path)
        QIcon.setThemeSearchPaths(QIcon.themeSearchPaths() +
                                  ["/home/jajcus/git/sampledrawer/icons"])
        logger.debug("Icon search path: %r", QIcon.themeSearchPaths())
        QIcon.setFallbackSearchPaths([":icons/"] + QIcon.fallbackSearchPaths())
        logger.debug("Icon fallback path: %r", QIcon.fallbackSearchPaths())
        logger.debug("Theme name %r", QIcon.themeName())
        logger.debug("Fallback theme name: %r", QIcon.fallbackThemeName())
        self.qapp.setWindowIcon(QIcon(":icons/sampledrawer.svg"))

    def start(self):
        try:
            self.audio_driver = get_audio_driver(self.args)
        except AudioDriverError as err:
            logger.error("Audio driver initialization error: %s", err)
            return 1
        self.log_window = LogWindow(self)
        self.main_window = MainWindow(self)
        self.main_window.show()
        signal_handler = SignalHandler()
        signal_handler.activate()
        self.qapp.aboutToQuit.connect(signal_handler.deactivate)
        self.started = True
        try:
            return self.qapp.exec_()
        finally:
            self.started = False

    def exit(self, code):
        if self.qapp and self.started:
            self.qapp.exit(code)
        else:
            self.app.exit(code)
Beispiel #5
0
    def requestStarted(self, job: QWebEngineUrlRequestJob) -> None:
        webUiOrigin = QUrl(SCHEMENAME + ":")
        GET: QByteArray = QByteArray(b"GET")
        POST: QByteArray = QByteArray(b"POST")

        method = job.requestMethod()
        url = job.requestUrl()
        initiator = job.initiator()
        if method == GET and url == WebUiHandler.aboutUrl:
            f = QFile(":/about.html", job)
            f.open(QIODevice.ReadOnly)
            job.reply(b"text/html", f)
        elif (method == POST and url == WebUiHandler.aboutUrl
              and initiator == webUiOrigin):
            job.fail(QWebEngineUrlRequestJob.RequestAborted)
            QApplication.exit()
        else:
            job.fail(QWebEngineUrlRequestJob.UrlNotFound)
Beispiel #6
0
class App(QObject):

    def __init__(self, args):
        super(App, self).__init__()
        QCoreApplication.setOrganizationName('Dynart')
        QCoreApplication.setApplicationName('NodeEditor')
        self._qApp = QApplication(args)
        self._qApp.setStyle(Style())
        self._mainWindow = MainWindow(self)
        self._mainWindow.show()

    def run(self):
        settings = QSettings()
        self._mainWindow.restoreGeometry(settings.value('mainWindowGeometry'))
        self._mainWindow.restoreState(settings.value('mainWindowState'))
        return self._qApp.exec_()

    def exit(self, returnCode=0):
        settings = QSettings()
        settings.setValue('mainWindowGeometry', self._mainWindow.saveGeometry())
        settings.setValue('mainWindowState', self._mainWindow.saveState())
        self._qApp.exit(returnCode)
Beispiel #7
0
def main():
    parser = argparse.ArgumentParser(
        description='Recognize faces from an video file')
    parser.add_argument('-i',
                        '--input',
                        type=str,
                        help='Input file (default: Webcam on your computer)')
    parser.add_argument('-o',
                        '--output',
                        type=str,
                        help='Output file (default: None)')
    args = parser.parse_args()

    if args.input:
        video = args.input
    else:
        video = 0

    app = QApplication([])

    window = VideoArea(video, args.output)
    window.show()

    app.exit(app.exec_())
 def thoat(self):
     QApplication.exit()
Beispiel #9
0
 def slot_exit(self):
     QApplication.exit(0)
Beispiel #10
0
class GUI(Thread):
    ''' render the board items and write descrete inputs when button is pushed. '''
    die = False

    def __init__(self, context):
        Thread.__init__(self)
        self.app = None
        self.bulb = None
        self.context = context[0]

    def clickedButton1(self):
        log.info('clicked')
        ''' descrete input function seems to be 2 '''
        address = 0x00
        old_values = self.context.getValues(READ_INPUT, address, count=1)
        log.info('old values: ' + str(old_values))
        values = [1 for v in old_values]
        log.info('clickedButton1 reg 2 addr 0 new values: ' + str(values))
        self.context.setValues(READ_INPUT, address, values)
        time.sleep(1)
        self.context.setValues(READ_INPUT, address, old_values)

    def clickedButton2(self):
        log.info('clicked')
        ''' descrete input function seems to be 2 '''
        address = 0x01
        old_values = self.context.getValues(READ_INPUT, address)
        log.info('old values: ' + str(old_values))
        values = [1 for v in old_values]
        log.info('clickedButton2 reg %d addr 0x%x new values: %s' %
                 (READ_INPUT, address, str(values)))
        self.context.setValues(READ_INPUT, address, values)
        time.sleep(1)
        self.context.setValues(READ_INPUT, address, old_values)

    def run(self):
        self.app = QApplication(sys.argv)
        win = QWidget()
        vbox = QVBoxLayout()
        button1 = QPushButton('Button 1')
        button2 = QPushButton('Button 2')
        button1.clicked.connect(self.clickedButton1)
        button2.clicked.connect(self.clickedButton2)
        self.bulb = QLabel()
        self.bulb.setText("Bulb: OFF")
        vbox.addWidget(button1)
        vbox.addWidget(button2)
        vbox.addWidget(self.bulb)
        win.setLayout(vbox)
        win.setWindowTitle('Physical Board')
        win.resize(200, 200)
        win.show()
        try:
            self.app.exec_()
        except KeyboardInterrupt:
            log.info('GUI FOUND interrupt')
            self.endMe()

    def setBulb(self, is_on):
        if self.bulb is not None:
            if is_on:
                self.bulb.setText("Bulb: ON")
                self.bulb.setStyleSheet('background-color: yellow')
            else:
                self.bulb.setText("Bulb: OFF")
                self.bulb.setStyleSheet('background-color: white')

    def endMe(self):
        self.app.exit()
        exit(0)
Beispiel #11
0
class pyWordArt:
    def __init__(self,
                 text="WordArt Test",
                 style=15,
                 size=100,
                 noOpenGL=False):

        self.Styles = {
            'outline': 0,
            'up': 1,
            'arc': 2,
            'squeeze': 3,
            'inverted-arc': 4,
            'basic-stack': 5,
            'italic-outline': 6,
            'slate': 7,
            'mauve': 8,
            'graydient': 9,
            'red-blue': 10,
            'brown-stack': 11,
            'radial': 12,
            'purple': 13,
            'green-marble': 14,
            'rainbow': 15,
            'aqua': 16,
            'texture-stack': 17,
            'paper-bag': 18,
            'sunset': 19,
            'tilt': 20,
            'blues': 21,
            'yellow-dash': 22,
            'green-stack': 23,
            'chrome': 24,
            'marble-slab': 25,
            'gray-block': 26,
            'superhero': 27,
            'horizon': 28,
            'stack-3d': 29
        }

        self.noOpenGL = noOpenGL
        #better safe than sorry
        if self.noOpenGL == False and sys.platform != "win32" and sys.platform != "darwin":
            if not self.__X_is_running():
                self.noOpenGL = True

        arglist = [sys.argv[0], "--disable-web-security"]
        if self.noOpenGL:
            arglist.append("-platform")
            arglist.append("minimal")

        self.__app = QApplication(arglist)

        #Required properties:
        self.text = text
        self.size = size
        self.style = style
        #Optional properties:
        self.transparentBackground = False
        self.canvasWidth = 1754  #3508
        self.canvasHeight = 1240  #2480
        self.debug = False

    def WordArt(self, wordartText, wordartStyle, wordartSize):
        self.text = wordartText
        self.style = wordartStyle
        self.size = wordartSize

    def toHTML(self, wordartText, wordartStyle, wordartSize):
        srcfolder = os.path.abspath(os.path.dirname(__file__))
        myhtml = "<!DOCTYPE html>"
        myhtml = myhtml + "<html>"
        myhtml = myhtml + "<head>"
        myhtml = myhtml + "<title>CSS3 WordArt</title>"
        myhtml = myhtml + "<link href=\"file://" + srcfolder + "/css3wordart/css/style.css\" rel=\"stylesheet\" type=\"text/css\" />"
        myhtml = myhtml + "<script src=\"file://" + srcfolder + "/css3wordart/js/object-observe-lite.js\"></script>"
        myhtml = myhtml + "<script src=\"file://" + srcfolder + "/css3wordart/js/wordart.js\"></script>"
        myhtml = myhtml + "</head>"
        myhtml = myhtml + "<body>"
        myhtml = myhtml + "<input type=\"hidden\" id=\"canvasWidth\" name=\"canvasWidth\" value=\"" + str(
            self.canvasWidth) + "\">"
        myhtml = myhtml + "<input type=\"hidden\" id=\"canvasHeight\" name=\"canvasHeight\" value=\"" + str(
            self.canvasHeight) + "\">"
        myhtml = myhtml + "<input type=\"hidden\" id=\"wordart-style\" name=\"wordart-style\" value=\"" + str(
            wordartStyle) + "\">"
        myhtml = myhtml + "<input type=\"hidden\" id=\"wordart-size\" name=\"wordart-size\" value=\"" + str(
            wordartSize) + "\">"
        myhtml = myhtml + "<section class=\"background\">"
        myhtml = myhtml + "<template id=\"bgWordart\">"
        myhtml = myhtml + "<div class=\"wordart\">"
        myhtml = myhtml + "<center><span class=\"text\" id=\"wordart-text\" name=\"wordart-text\" data-text=\"" + wordartText + "\">" + wordartText + "</span></center>"
        myhtml = myhtml + "</div>"
        myhtml = myhtml + "</template>"
        myhtml = myhtml + "</section>"
        myhtml = myhtml + "</body>"
        myhtml = myhtml + "</html>"
        return myhtml

    def toFile(self, filename):
        self.imgName = filename
        if not bool(
                self.imgName.endswith(".png") or self.imgName.endswith(".jpg")
                or self.imgName.endswith(".jpeg") or
                self.imgName.endswith(".gif") or self.imgName.endswith(".tif")
                or self.imgName.endswith(".tiff")
                or self.imgName.endswith(".bmp")):
            self.imgName = self.imgName + ".png"

        self.__render()

        return self.imgName

    def toBase64(self):
        self.__buffer = QtCore.QBuffer()
        self.__buffer.open(QtCore.QBuffer.ReadWrite)

        self.__render()

        b64 = self.__buffer.data().toBase64().data()
        return b64

    def toBufferIO(self):
        b64 = self.toBase64()
        return io.BytesIO(base64.decodebytes(b64))

    def __render(self):
        self.__view = QtWebEngineWidgets.QWebEngineView()
        self.__view.setFixedSize(self.canvasWidth, self.canvasHeight)
        self.__view.loadFinished.connect(self.__grabimage)

        myhtml = self.toHTML(self.text, self.style, self.size)

        self.__view.setHtml(myhtml)
        if not self.debug:
            self.__view.setAttribute(QtCore.Qt.WA_DontShowOnScreen, True)
            self.__view.setAttribute(QtCore.Qt.WA_ShowWithoutActivating, True)
            self.__view.setAttribute(QtCore.Qt.WA_DeleteOnClose, True)
        self.__view.setAttribute(QtCore.Qt.WA_AlwaysStackOnTop, True)
        self.__view.show()

        self.__app.exec_()

    def __grabimage(self):
        if sys.platform == "win32":
            QApplication.processEvents()
        if self.debug:
            test = input("Press return to continue or Ctrl+C to stop")
        pixmap = self.__view.grab()
        image = self.__cropImage(pixmap.toImage(), self.transparentBackground)
        useBuffer = True
        try:
            if not self.__buffer.isOpen():
                useBuffer = False
        except:
            useBuffer = False
        if useBuffer:
            image.save(self.__buffer, "PNG")
            time.sleep(0.1)
            self.__buffer.close()
        else:
            image.save(self.imgName)
            while not os.path.isfile(self.imgName):
                time.sleep(0.1)
            time.sleep(
                0.1
            )  #sometimes we need a little bit more just to be sure the file has actually been written
        self.__view.hide()
        self.__app.exit()

    def __cropImage(self, origimage, transparentBackground=False):
        maxX = 0
        minX = origimage.width()
        maxY = 0
        minY = origimage.height()
        exclusionColor = QtGui.QColor(255, 255, 255, 255)

        for x in range(origimage.width()):
            for y in range(origimage.height()):
                if QtGui.QColor.fromRgb(origimage.pixel(x,
                                                        y)) != exclusionColor:
                    if x < minX:
                        minX = x
                    if x > maxX:
                        maxX = x
                    if y < minY:
                        minY = y
                    if y > maxY:
                        maxY = y

        if minX > maxX or minY > maxY:
            myimage = origimage
        else:
            myimage = origimage.copy(minX, minY, maxX - minX, maxY - minY)

        if transparentBackground:
            newimage = QtGui.QImage(myimage.width(), myimage.height(),
                                    QtGui.QImage.Format_ARGB32)
            for x in range(myimage.width()):
                for y in range(myimage.height()):
                    tmpcolor = QtGui.QColor.fromRgb(myimage.pixel(x, y))
                    if tmpcolor == exclusionColor:
                        newimage.setPixelColor(x, y, QtGui.QColor(0, 0, 0, 0))
                    else:
                        newimage.setPixelColor(x, y, tmpcolor)
            myimage = newimage
        return myimage

    def __X_is_running(self):
        try:
            #thanks to : https://stackoverflow.com/questions/1027894/detect-if-x11-is-available-python, it's much more clean than my original idea
            p = Popen(["xset", "-q"], stdout=PIPE, stderr=PIPE)
            p.communicate()
            return p.returncode == 0
        except:
            return False

    def demo(self, dirName, wordartSize=100):
        if not os.path.isdir(dirName):
            print("Not a folder")
            return
        for elem in self.Styles:
            self.WordArt("WordArt Test", self.Styles[elem], wordartSize)
            self.toFile(dirName + "/demo-" + elem + ".png")
Beispiel #12
0
            rewards.append(reward)
            if done:
                episode_rewards.append(np.sum(rewards))
                episode_length.append(t)
                episode_critic_loss.append(np.sum(critics))
                print(
                    "episode: {}, reward: {}, total length: {}, entropy {:.2f}"
                    .format(i_episode, np.sum(rewards), t, overall_entropy))
                break

        advantage = torch.stack(advantages)
        # update actor critic
        entropys = torch.stack(entropys)
        log_probs = torch.stack(log_probs)

        critic_loss = 0.5 * advantage.pow(2).sum()
        actor_loss = (-log_probs * advantage.detach()).sum()
        ac_loss = actor_loss + critic_loss - 0.01 * entropys.sum()
        episode_actor_loss.append(critic_loss.detach().numpy())
        episode_total_loss.append(ac_loss.detach().numpy())
        episode_entropy.append(entropys.mean())
        # print("episode loss {:.2f} \n".format(ac_loss))

        ac_optimizer.zero_grad()
        ac_loss.backward()
        torch.nn.utils.clip_grad_norm_(actor_critic.parameters(), 1)
        ac_optimizer.step()

        app.exec_()
        sys.exit(app.exit())
Beispiel #13
0
 def _exitButtonClicked(self):
     QApplication.exit(0)
Beispiel #14
0
from PySide2.QtWidgets import QApplication, QFrame
import sys
import time

from classes.main_window import MainWindow

if __name__ == "__main__":
    app = QApplication(sys.argv)

    window = MainWindow()
    window.resize(480, 130)
    window.show()

    app.exec_()
    app.exit()
Beispiel #15
0
 def exit_app(self,checked):
     QApplication.exit(-1234)
Beispiel #16
0
class Application:
    def __init__(self):
        self.title = u'Tracks detection'
        # Настройки
        self.settings = Settings()

    def application_init(self):
        '''Инициализация Qt приложения'''
        # Создание приложение
        self.qapp = QApplication(sys.argv)
        self.__app_working_status = True
        # Установка локлизатора
        translator = QTranslator(self.qapp)
        translator.load('lang/tr_ru', os.path.dirname(__file__))
        self.qapp.installTranslator(translator)

        self.mainDialog = MainDialog(self, self.title)
        self.mainDialog.closeApp.connect(self.__finalize_before_quit)

        self.controls = {
            'step': ['X', 'Y', 'Z', 'A'],
            'servo': ['B', 'C'],
            'pins': {
                'P1': [],
                'P2': ['UV', 'VIS']
            }
        }

        self.mainDialog.show()
        self.project_init()
        self.gui_init()
        self.communication_init()

        sys.exit(self.qapp.exec_())

    def __finalize_before_quit(self):
        self.__app_working_status = False
        if self.grbl.connection: self.grbl.connection.close()
        if self.communication_thread: self.communication_thread.join()
        self.qapp.exit()

    def retuenicon(self, name):
        return QIcon(
            QPixmap(
                os.path.normpath(
                    os.path.join(os.path.dirname(os.path.realpath(__file__)),
                                 '', name + '.png'))))

    def project_init(self):
        self.project = Project('New')

    def async_sleep(self, sleep):
        for i in range(sleep):
            time.sleep(1)
            if not self.__app_working_status: break

    def __connection_worker(self):
        while self.__app_working_status:
            status = self.__current_conacion_procedure()
            if status: break
            if status:
                self.__current_conacion_procedure = self.grbl.getStatus
            else:
                self.__current_conacion_procedure = self.__auto_seach__
            self.async_sleep(5)
            self.cnc_indicator.setStatus(status)

    def communication_init(self):
        self.grbl = GRBL(HOST=self.settings.grblip)
        self.__current_conacion_procedure = self.__auto_seach__
        self.communication_thread = threading.Thread(
            target=self.__connection_worker)
        self.communication_thread.setDaemon(True)
        self.communication_thread.start()

    def gui_init(self):

        pref_menu = menu_item(u'Preferences')
        ref_menu = menu_item(u'Reference')
        gen_menu = menu_item(u'Device')

        gen_menu.addChildren(menu_item(u'GRBL', self.showGrblDialog))

        file_menu = menu_item(self.qapp.tr(u'File'))
        file_menu.addChildren(menu_item(u'New', self.newProject),
                              menu_item(u'Open', self.openProject),
                              menu_item(u'Import...', self.openFile),
                              menu_item(u'Save', self.saveProject),
                              menu_item(u'Exit', self.qapp.exit))

        pref_menu.addChildren(gen_menu, menu_item(u'Settings'))

        ref_menu.addChildren(menu_item(u'Help'),
                             menu_item(u'About', self.showAbout))

        self.mainDialog.addMenuItems(file_menu, pref_menu, ref_menu)

        self.cnc_indicator = work_indicator(u'CNC')
        self.mainDialog.addStatusObj(self.cnc_indicator)

        self.progressBar = QProgressBar()
        self.progressBar.setTextVisible(True)
        self.progressBar.setAlignment(Qt.AlignCenter)
        self.progressBar.minimum = 1
        self.progressBar.maximum = 100
        self.mainDialog.addPermanentStatusObj(self.progressBar)
        '''Инициализациия таблицы содержания'''
        treeDock = QDockWidget(self.qapp.tr(u'Project tree'), self.mainDialog)
        treeDock.setAllowedAreas(Qt.LeftDockWidgetArea
                                 | Qt.RightDockWidgetArea)
        self.mainDialog.addDockWidget(Qt.LeftDockWidgetArea, treeDock)

        self.mainnodes = [Node("Samples"), Node("Other")]
        self.project_tree = ProjectTree(self, self.mainnodes)
        self.project_tree.doubleClicked.connect(self.on_tree_clicked)
        treeDock.setWidget(self.project_tree)
        '''Инициализациия центра'''
        jog = JogWidget(app=self.qapp,
                        axies=self.controls,
                        pinAcions=self.pinAcions,
                        motorActions=self.send_to_grbl)
        self.mainDialog.addToCenter(jog)
        jog.raise_()

    def send_to_grbl(self, text, send_type):
        if len(text):
            self.grbl.send_task(text, send_type)

    def pinAcions(self, status, pin):
        task = 'M62 {pin}'.format(pin=pin) if status else 'M63 {pin}'.format(
            pin=pin)
        self.grbl.send_task(task, SENDTYPE.IDLE)

    def setProgress(self, step, steps):
        value = step / float(len(steps)) * 100.
        indx = int(ceil(step - 1))
        text = self.qapp.tr(steps[indx])
        self.progressBar.setFormat("{0} - {1}%".format(text, round(value, 0)))
        self.progressBar.setValue(value)
        self.qapp.processEvents()

    def on_tree_clicked(self, index):
        item = self.project_tree.selectedIndexes()[0]
        if self.project.current_sample != item.model().itemFromIndex(
                index).obj:
            self.project.current_sample = item.model().itemFromIndex(index).obj
            self.refresh()

    def newProject(self):
        self.mainDialog.PreparedArea.clear()
        self.mainDialog.ThroughArea.clear()
        self.mainDialog.BacklightArea.clear()
        self.mainnodes = [Node("Samples"), Node("Other")]
        self.project_tree.setMainNodes(self.mainnodes)
        self.project = Project('TEMP')
        self.refresh()

    def openProject(self):

        fileName, _ = QFileDialog.getOpenFileName(
            self.mainDialog, self.qapp.tr("Load project"), ".\\",
            self.qapp.tr("Project file (*.tpr)"))

        infile = open(fileName, 'rb')
        self.project = pickle.load(infile)
        infile.close()

        self.mainDialog.PreparedArea.clear()
        self.mainDialog.ThroughArea.clear()
        self.mainDialog.BacklightArea.clear()
        self.mainnodes = [Node("Samples"), Node("Other")]
        self.project_tree.setMainNodes(self.mainnodes)
        self.refresh()

    def saveProject(self):
        fileName, _ = QFileDialog.getSaveFileName(
            self.mainDialog, self.qapp.tr("Save project"), ".\\",
            self.qapp.tr("Project file (*.tpr)"))
        outfile = open(fileName, "wb")
        pickle.dump(self.project, outfile)
        outfile.close()

    def draw_tree(self):
        target = self.mainnodes[0]
        children = target.children()
        samples_in_tree = []

        for sample in self.project.samples.get_sorted_by_id():
            if len(children) > 0:
                samples_in_tree = [node.obj for node in children]
            if sample not in samples_in_tree:
                target.addChild(Node(sample))

        self.project_tree.refresh()

    def openFile(self):
        path_to_file, _ = QFileDialog.getOpenFileName(
            self.mainDialog, self.qapp.tr("Load Image"),
            self.qapp.tr(u".\example_imgs"), self.qapp.tr("Images (*.jpg)"))
        # path_to_file, _ = QFileDialog.getOpenFileName(self.mainDialog, self.app.tr("Load Image"), self.app.tr("~/Desktop/"), self.app.tr("Images (*.jpg)"))

        # Определяем тип файла на просвет или на подсветку
        tools.processing(path_to_file, self.project, self.separator,
                         self.segmentation, self.counter, self.setProgress)
        self.refresh()

    def refresh(self):
        self.draw_tree()
        self.fill_table()
        self.updete_viewers()

    def fill_table(self):
        data = []
        sample = self.project.current_sample

        if not sample:
            data = [['', '', '']]
            self.mainDialog.tablemodel.setData(data)
            return

        for track in sample.tracks.get_sorted():
            data.append([str(track.id), str(track.count), str(track.area)])

        self.mainDialog.tablemodel.setData(data)
        self.mainDialog.table.resizeRowsToContents()
        self.mainDialog.table.resizeColumnsToContents()

        count = round(
            np.sum([track.count
                    for track in sample.tracks.get_sorted_by_id()]), 2)
        general_area = round(
            np.sum([track.area for track in sample.tracks.get_sorted_by_id()]),
            2)

        self.mainDialog.infolabel.setText('''
                        <p align="center">General tracks count<br>{tracks_count}</p>
                        <p align="center">General tracks area (%)<br>{general_area}</p>
                        '''.format(tracks_count=count,
                                   general_area=general_area))

    def draw_objects(self, viewer, sample):
        for track in sample.tracks.get_sorted():
            viewer.add_rect(track.left, track.rigth, track.top, track.bottom)
            viewer.add_Polygon(track.contour, track.left, track.top)
            text = 'Count: {tracks_count}\nArea (%): {general_area}'.format(
                tracks_count=track.count, general_area=track.area)

            viewer.add_Text(text, track.left, track.top)

    def updete_viewers(self):
        sample = self.project.current_sample

        if not sample:
            return

        self.mainDialog.ThroughArea.load_image(sample.through)
        self.mainDialog.BacklightArea.load_image(sample.backlight)
        self.mainDialog.PreparedArea.load_image(sample.prepared)

        self.draw_objects(self.mainDialog.ThroughArea, sample)
        self.draw_objects(self.mainDialog.BacklightArea, sample)
        self.draw_objects(self.mainDialog.PreparedArea, sample)

    def __connect_to_grbl__(self):
        '''Функция подключения к CNC сканера, которая передается в настройки станка'''
        status = self.grbl.connect()
        if not status: return
        self.cnc_indicator.setStatus(-1)
        self.grbl.reset_alarm()
        self.cnc_indicator.setStatus(status)
        return status

    def __check_ip__(self, ip):
        status = False
        test_grbl = GRBL(HOST=self.settings.grblip)
        test_grbl.setHost(ip)
        try:
            status = test_grbl.connect(check=False)
            test_grbl.connection.close()
        except OSError:
            pass
        return ip if status else None

    def __auto_seach__(self, property=None):
        '''Функция авто поиска IP станка
        property нужен, чтобы вернуть результат в inputField окна настроек
        '''
        if self.grbl.connection: self.grbl.connection.close()
        devices = [device for device in os.popen('arp -a')]
        ip_candidates = [
            re.findall(r"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b", device)[0]
            for device in devices if
            len(re.findall(r"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b",
                           device)) != 0
        ]
        if self.settings.grblip in ip_candidates:
            ip_candidates.remove(self.settings.grblip)
            ip_candidates.insert(0, self.settings.grblip)

        pool = ThreadPool(4)
        results = pool.map(self.__check_ip__, ip_candidates)
        index = np.where(results != None)[0][0]
        if not results[index]:
            # print(self.qapp.tr('There is not  devices in current net'))
            return
        pool.close()
        pool.join()

        self.grbl.setHost(results[index])
        self.__connect_to_grbl__()

        if property:
            property.setText(
                results[index]
            )  # property нужен, чтобы вернуть результат в inputField

        self.settings.grblip = results[index]
        self.settings.write()
        print(self.qapp.tr('Connected to') + ' {ip}'.format(ip=results[index]))
        return True

    def showAbout(self):
        about = about_dialog(self)
        about.open()

    def showGrblDialog(self):
        dialog = grblDialog(self,
                            connection_func=self.__connect_to_grbl__,
                            auto_seach_func=self.__auto_seach__)
        dialog.execute(self.settings)
Beispiel #17
0
 def reboot_app(self,checked):
     QApplication.exit(mainwindow.EXIT_CODE_REBOOT)
Beispiel #18
0
        while 1:
            #print("thread")
            self.camera.movie()
            if self.camera.last_frame is not np.zeros((1, 1)):
                #print("coucou")
                self.image_camera = self.camera.last_frame[1]
                #print(self.image_camera)
                #print(self.image_camera)
                height, width, channel = self.image_camera.shape
                bytesPerLine = 3 * width
                self.image = QImage(self.image_camera.data, width, height,
                                    bytesPerLine,
                                    QImage.Format_RGB888).rgbSwapped()
                #print(self.image)
                #self.painter.drawImage(0,0,self.image)

                self.changePixmap.emit(self.image)

    def stop(self):
        #print("coucou")
        self.terminate()


if __name__ == '__main__':
    app = QApplication([])
    C = Camera("http://192.168.1.62:8000/stream.mjpg")
    C.initialize()
    window = camera_view(C)
    window.show()
    app.exit(app.exec_())
Beispiel #19
0
 def exit_app(self):
     self.saveNotes()
     QApplication.exit()