AutoFTG-Scripts_Metashape-Pro/AutoFTG/autoftg_batch_setalign.py

327 lines
13 KiB
Python
Raw Normal View History

2023-08-04 19:35:27 +02:00
# AutoFTG - Scripts for Agisoft Metashape Pro
#
# Dialog: Batch Chunk Creator - Align Photos Settings
# ----------------------------------------------------------------
import os
import shutil
import sys
import time
import subprocess
from configparser import ConfigParser
from datetime import datetime
from os import path
import Metashape
from PySide2 import QtCore, QtGui, QtWidgets
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
import AutoFTG.autoftg_main as autoftg_main
from AutoFTG.qtresources_rc2 import *
import AutoFTG.autoftg_batch as autoftg_batch
from AutoFTG.autoftg_batch import *
class Ui_DialogAlignPhotos(QtWidgets.QDialog):
def __init__(self, parent):
QtWidgets.QDialog.__init__(self, parent)
self.setObjectName(u"DialogAlignPhotos")
self.resize(290, 460)
self.setWindowTitle(u"Align Photos Settings")
self.formLayoutWidget = QWidget(self)
self.formLayoutWidget.setObjectName(u"formLayoutWidget")
self.formLayoutWidget.setGeometry(QRect(0, 0, 291, 461))
self.formLayout = QFormLayout(self.formLayoutWidget)
self.formLayout.setObjectName(u"formLayout")
self.formLayout.setContentsMargins(10, 10, 10, 10)
self.label_4 = QLabel(self.formLayoutWidget)
self.label_4.setObjectName(u"label_4")
sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_4.sizePolicy().hasHeightForWidth())
self.label_4.setSizePolicy(sizePolicy)
font = QFont()
font.setFamily(u"Segoe UI")
font.setPointSize(14)
font.setBold(True)
font.setWeight(75)
self.label_4.setFont(font)
self.label_4.setText(u"Align Photos Settings")
self.formLayout.setWidget(0, QFormLayout.SpanningRole, self.label_4)
self.line = QFrame(self.formLayoutWidget)
self.line.setObjectName(u"line")
self.line.setFrameShape(QFrame.HLine)
self.line.setFrameShadow(QFrame.Sunken)
self.formLayout.setWidget(1, QFormLayout.SpanningRole, self.line)
self.label = QLabel(self.formLayoutWidget)
self.label.setObjectName(u"label")
font1 = QFont()
font1.setFamily(u"Segoe UI")
font1.setPointSize(11)
self.label.setFont(font1)
self.label.setText(u"Quality")
self.formLayout.setWidget(2, QFormLayout.LabelRole, self.label)
self.comboBox_quality = QComboBox(self.formLayoutWidget)
self.comboBox_quality.addItem(u"Highest")
self.comboBox_quality.addItem(u"High")
self.comboBox_quality.addItem(u"Medium")
self.comboBox_quality.addItem(u"Low")
self.comboBox_quality.addItem(u"Lowest")
self.comboBox_quality.setObjectName(u"comboBox_quality")
self.comboBox_quality.setCurrentText(u"Highest")
self.formLayout.setWidget(2, QFormLayout.FieldRole, self.comboBox_quality)
self.line_2 = QFrame(self.formLayoutWidget)
self.line_2.setObjectName(u"line_2")
self.line_2.setFrameShape(QFrame.HLine)
self.line_2.setFrameShadow(QFrame.Sunken)
self.formLayout.setWidget(3, QFormLayout.SpanningRole, self.line_2)
self.label_2 = QLabel(self.formLayoutWidget)
self.label_2.setObjectName(u"label_2")
self.label_2.setFont(font1)
self.label_2.setText(u"Pre-selection")
self.formLayout.setWidget(4, QFormLayout.LabelRole, self.label_2)
self.checkBox_gen = QCheckBox(self.formLayoutWidget)
self.checkBox_gen.setObjectName(u"checkBox_gen")
self.checkBox_gen.setText(u"Generic")
self.formLayout.setWidget(4, QFormLayout.FieldRole, self.checkBox_gen)
self.checkBox_ref = QCheckBox(self.formLayoutWidget)
self.checkBox_ref.setObjectName(u"checkBox_ref")
self.checkBox_ref.setText(u"Reference")
self.formLayout.setWidget(5, QFormLayout.FieldRole, self.checkBox_ref)
self.comboBox_ref = QComboBox(self.formLayoutWidget)
self.comboBox_ref.addItem(u"Source")
self.comboBox_ref.addItem(u"Estimated")
self.comboBox_ref.addItem(u"Sequential")
self.comboBox_ref.setObjectName(u"comboBox_ref")
self.comboBox_ref.setEnabled(False)
self.comboBox_ref.setCurrentText(u"Source")
self.formLayout.setWidget(6, QFormLayout.FieldRole, self.comboBox_ref)
self.line_5 = QFrame(self.formLayoutWidget)
self.line_5.setObjectName(u"line_5")
self.line_5.setFrameShape(QFrame.HLine)
self.line_5.setFrameShadow(QFrame.Sunken)
self.formLayout.setWidget(7, QFormLayout.SpanningRole, self.line_5)
self.label_3 = QLabel(self.formLayoutWidget)
self.label_3.setObjectName(u"label_3")
self.label_3.setFont(font1)
self.label_3.setText(u"Point Limit")
self.formLayout.setWidget(8, QFormLayout.LabelRole, self.label_3)
self.horizontalLayout_2 = QHBoxLayout()
self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
self.label_6 = QLabel(self.formLayoutWidget)
self.label_6.setObjectName(u"label_6")
sizePolicy.setHeightForWidth(self.label_6.sizePolicy().hasHeightForWidth())
self.label_6.setSizePolicy(sizePolicy)
self.label_6.setText(u"Key")
self.horizontalLayout_2.addWidget(self.label_6)
self.label_5 = QLabel(self.formLayoutWidget)
self.label_5.setObjectName(u"label_5")
sizePolicy.setHeightForWidth(self.label_5.sizePolicy().hasHeightForWidth())
self.label_5.setSizePolicy(sizePolicy)
self.label_5.setText(u"Tie")
self.horizontalLayout_2.addWidget(self.label_5)
self.formLayout.setLayout(8, QFormLayout.FieldRole, self.horizontalLayout_2)
self.horizontalLayout = QHBoxLayout()
self.horizontalLayout.setObjectName(u"horizontalLayout")
self.lineEdit_keypoints = QLineEdit(self.formLayoutWidget)
self.lineEdit_keypoints.setObjectName(u"lineEdit_keypoints")
self.lineEdit_keypoints.setPlaceholderText(u"40000")
self.horizontalLayout.addWidget(self.lineEdit_keypoints)
self.lineEdit_tiepoints = QLineEdit(self.formLayoutWidget)
self.lineEdit_tiepoints.setObjectName(u"lineEdit_tiepoints")
self.lineEdit_tiepoints.setPlaceholderText(u"10000")
self.horizontalLayout.addWidget(self.lineEdit_tiepoints)
self.formLayout.setLayout(9, QFormLayout.FieldRole, self.horizontalLayout)
self.line_4 = QFrame(self.formLayoutWidget)
self.line_4.setObjectName(u"line_4")
self.line_4.setFrameShape(QFrame.HLine)
self.line_4.setFrameShadow(QFrame.Sunken)
self.formLayout.setWidget(10, QFormLayout.SpanningRole, self.line_4)
self.label_7 = QLabel(self.formLayoutWidget)
self.label_7.setObjectName(u"label_7")
self.label_7.setFont(font1)
self.label_7.setText(u"Other")
self.formLayout.setWidget(11, QFormLayout.LabelRole, self.label_7)
self.checkBox_filtmask = QCheckBox(self.formLayoutWidget)
self.checkBox_filtmask.setObjectName(u"checkBox_filtmask")
self.checkBox_filtmask.setText(u"Filter Masked")
self.formLayout.setWidget(11, QFormLayout.FieldRole, self.checkBox_filtmask)
self.checkBox_masktie = QCheckBox(self.formLayoutWidget)
self.checkBox_masktie.setObjectName(u"checkBox_masktie")
self.checkBox_masktie.setText(u"Mask Tie Points")
self.formLayout.setWidget(13, QFormLayout.FieldRole, self.checkBox_masktie)
self.checkBox_keepkey = QCheckBox(self.formLayoutWidget)
self.checkBox_keepkey.setObjectName(u"checkBox_keepkey")
self.checkBox_keepkey.setText(u"Keep Key Points")
self.formLayout.setWidget(14, QFormLayout.FieldRole, self.checkBox_keepkey)
self.checkBox_guided = QCheckBox(self.formLayoutWidget)
self.checkBox_guided.setObjectName(u"checkBox_guided")
self.checkBox_guided.setText(u"Guided Matching")
self.formLayout.setWidget(15, QFormLayout.FieldRole, self.checkBox_guided)
self.checkBox_reset = QCheckBox(self.formLayoutWidget)
self.checkBox_reset.setObjectName(u"checkBox_reset")
self.checkBox_reset.setText(u"Reset Alignement")
self.formLayout.setWidget(16, QFormLayout.FieldRole, self.checkBox_reset)
self.verticalSpacer = QSpacerItem(20, 5, QSizePolicy.Minimum, QSizePolicy.Expanding)
self.formLayout.setItem(17, QFormLayout.FieldRole, self.verticalSpacer)
self.horizontalLayout_3 = QHBoxLayout()
self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
self.pushButton_save = QPushButton(self.formLayoutWidget)
self.pushButton_save.setObjectName(u"pushButton_save")
self.pushButton_save.setText(u"Save")
icon = QIcon()
icon.addFile(u":/icons/icons8-save-as-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_save.setIcon(icon)
self.pushButton_save.setIconSize(QSize(20, 20))
self.horizontalLayout_3.addWidget(self.pushButton_save)
self.pushButton_cancel = QPushButton(self.formLayoutWidget)
self.pushButton_cancel.setObjectName(u"pushButton_cancel")
self.pushButton_cancel.setText(u"Cancel")
icon1 = QIcon()
icon1.addFile(u":/icons/icons8-close-window-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_cancel.setIcon(icon1)
self.pushButton_cancel.setIconSize(QSize(20, 20))
self.horizontalLayout_3.addWidget(self.pushButton_cancel)
self.formLayout.setLayout(18, QFormLayout.FieldRole, self.horizontalLayout_3)
self.checkBox_filtsta = QCheckBox(self.formLayoutWidget)
self.checkBox_filtsta.setObjectName(u"checkBox_filtsta")
self.checkBox_filtsta.setText(u"Filter Stationary Points")
self.formLayout.setWidget(12, QFormLayout.FieldRole, self.checkBox_filtsta)
self.pushButton_cancel.clicked.connect(self.reject)
self.pushButton_save.clicked.connect(self.saveSettingsAlign)
self.currentChkDef = autoftg_batch.chunkSet
self.loadSettingsAlign()
self.exec_()
def loadSettingsAlign(self):
align_quality = autoftg_main.menuCfg.get(self.currentChkDef, "align_quality")
align_gen_presel = autoftg_main.menuCfg.getboolean(self.currentChkDef, "align_gen_presel")
align_ref_presel = autoftg_main.menuCfg.getboolean(self.currentChkDef, "align_ref_presel")
align_ref_presel_mode = autoftg_main.menuCfg.get(self.currentChkDef, "align_ref_presel_mode")
align_key_limit = autoftg_main.menuCfg.getint(self.currentChkDef, "align_key_limit")
align_tie_limit = autoftg_main.menuCfg.getint(self.currentChkDef, "align_tie_limit")
align_filter_mask = autoftg_main.menuCfg.getboolean(self.currentChkDef, "align_filter_mask")
align_mask_tiepoint = autoftg_main.menuCfg.getboolean(self.currentChkDef, "align_mask_tiepoint")
align_filter_stationary = autoftg_main.menuCfg.getboolean(self.currentChkDef, "align_filter_stationary")
align_keep_keypoints = autoftg_main.menuCfg.getboolean(self.currentChkDef, "align_keep_keypoints")
align_guided_matching = autoftg_main.menuCfg.getboolean(self.currentChkDef, "align_guided_matching")
align_reset_current = autoftg_main.menuCfg.getboolean(self.currentChkDef, "align_reset_current")
self.comboBox_quality.setCurrentText(align_quality)
self.checkBox_gen.setChecked(align_gen_presel)
self.checkBox_ref.setChecked(align_ref_presel)
self.comboBox_ref.setCurrentText(align_ref_presel_mode)
self.lineEdit_keypoints.setText(str(align_key_limit))
self.lineEdit_tiepoints.setText(str(align_tie_limit))
self.checkBox_filtmask.setChecked(align_filter_mask)
self.checkBox_masktie.setChecked(align_mask_tiepoint)
self.checkBox_filtsta.setChecked(align_filter_stationary)
self.checkBox_keepkey.setChecked(align_keep_keypoints)
self.checkBox_guided.setChecked(align_guided_matching)
self.checkBox_reset.setChecked(align_reset_current)
print("Align Photos settings loaded...")
def saveSettingsAlign(self):
align_quality = self.comboBox_quality.currentText()
align_gen_presel = self.checkBox_gen.isChecked()
align_ref_presel = self.checkBox_ref.isChecked()
align_ref_presel_mode = self.comboBox_ref.currentText()
align_key_limit = self.lineEdit_keypoints.text()
align_tie_limit = self.lineEdit_tiepoints.text()
align_filter_mask = self.checkBox_filtmask.isChecked()
align_mask_tiepoint = self.checkBox_masktie.isChecked()
align_filter_stationary = self.checkBox_filtsta.isChecked()
align_keep_keypoints = self.checkBox_keepkey.isChecked()
align_guided_matching = self.checkBox_guided.isChecked()
align_reset_current = self.checkBox_reset.isChecked()
autoftg_main.menuCfg.set(self.currentChkDef, "align_quality", str(align_quality))
autoftg_main.menuCfg.set(self.currentChkDef, "align_gen_presel", str(align_gen_presel))
autoftg_main.menuCfg.set(self.currentChkDef, "align_ref_presel", str(align_ref_presel))
autoftg_main.menuCfg.set(self.currentChkDef, "align_ref_presel_mode", str(align_ref_presel_mode))
autoftg_main.menuCfg.set(self.currentChkDef, "align_key_limit", str(align_key_limit))
autoftg_main.menuCfg.set(self.currentChkDef, "align_tie_limit", str(align_tie_limit))
autoftg_main.menuCfg.set(self.currentChkDef, "align_filter_mask", str(align_filter_mask))
autoftg_main.menuCfg.set(self.currentChkDef, "align_mask_tiepoint", str(align_mask_tiepoint))
autoftg_main.menuCfg.set(self.currentChkDef, "align_filter_stationary", str(align_filter_stationary))
autoftg_main.menuCfg.set(self.currentChkDef, "align_keep_keypoints", str(align_keep_keypoints))
autoftg_main.menuCfg.set(self.currentChkDef, "align_guided_matching", str(align_guided_matching))
autoftg_main.menuCfg.set(self.currentChkDef, "align_reset_current", str(align_reset_current))
with open(autoftg_main.menuCfgFilePath, 'w') as configfile:
autoftg_main.menuCfg.write(configfile)
print("Align Photos settings saved...")
self.accept()