└── ppt-gui-package ├── DEBIAN ├── control └── md5sums └── usr ├── bin └── ppt_gui_start └── share ├── applications └── archeos-specific │ └── ppt.desktop ├── archeos └── osm-bundler │ ├── README_PPTGUI.txt │ └── linux │ ├── icons │ ├── info_icon.png │ └── python_icon.png │ └── ppt_gui.py ├── doc └── ppt-gui │ └── changelog └── icons └── archeos ├── 48x48 └── ppt_icon48.png └── 64x64 └── ppt_icon64.png /ppt-gui-package/DEBIAN/control: -------------------------------------------------------------------------------- 1 | Package: ppt-gui 2 | Version: 0.1-archeos0.6 3 | Architecture: i386 4 | Maintainer: Alessandro Bezzi 5 | Installed-Size: 31 6 | Depends: python-qt4, python-imaging, xdg-utils, libgfortran3, liblapack3gf, ppt 7 | Section: photogrammetry 8 | Priority: extra 9 | Homepage: http://code.google.com/p/osm-bundler/ 10 | Description: Python Photogrammetry Toolbox GUI 11 | Very simple GUI to run Python Photogrammetry Toolbox. 12 | -------------------------------------------------------------------------------- /ppt-gui-package/DEBIAN/md5sums: -------------------------------------------------------------------------------- 1 | a0eff122e904e757241297a4053c2490 ./usr/share/applications/archeos-specific/ppt.desktop 2 | db34d640c2ee041553ed5084b5e40563 ./usr/share/doc/ppt-gui/changelog 3 | 49411d8d402d49ff94c56726085f5f8a ./usr/share/archeos/osm-bundler/linux/ppt_gui.py 4 | ea346ad0cfdfcabc4367c6be068b830f ./usr/share/archeos/osm-bundler/linux/icons/python_icon.png 5 | a38aebf92e50dc0caebc3d1df608fa9c ./usr/share/archeos/osm-bundler/linux/icons/info_icon.png 6 | c32d24c2211684324894ba6c8b93ad50 ./usr/share/archeos/osm-bundler/README_PPTGUI.txt 7 | eb5dd821c7e08bf54d2aea3e36597b2e ./usr/share/icons/archeos/48x48/ppt_icon48.png 8 | 776f02f97b9ae811ab56160ad81eef9e ./usr/share/icons/archeos/64x64/ppt_icon64.png 9 | 70d6af5dee75b18ec643770e69e28261 ./usr/bin/ppt_gui_start 10 | -------------------------------------------------------------------------------- /ppt-gui-package/usr/bin/ppt_gui_start: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | cd /usr/share/archeos/osm-bundler/linux/ 3 | python ./ppt_gui.py 4 | -------------------------------------------------------------------------------- /ppt-gui-package/usr/share/applications/archeos-specific/ppt.desktop: -------------------------------------------------------------------------------- 1 | 2 | [Desktop Entry] 3 | Categories=Photogrammetry; 4 | Exec=ppt_gui_start 5 | GenericName=Python Photogrammetry Toolbox 6 | Hidden=false 7 | Icon=/usr/share/icons/archeos/48x48/ppt_icon48.png 8 | Name=Python Photogrammetry Toolbox 9 | NoDisplay=false 10 | StartupNotify=true 11 | Terminal=1 12 | TryExec=ppt_gui_start 13 | Type=Application 14 | Version=0.1 15 | Name[en_GB]=ppt 16 | -------------------------------------------------------------------------------- /ppt-gui-package/usr/share/archeos/osm-bundler/README_PPTGUI.txt: -------------------------------------------------------------------------------- 1 | ------------------------------------------- 2 | WHAT IS PYTHON PHOTOGRAMMETRY TOOLBOX GUI? 3 | ------------------------------------------- 4 | 5 | This GUI was created by Alessandro and Luca Bezzi using PyQT4. 6 | It is a free software released under the GNU General Public License. 7 | 8 | 9 | ------------------------------------------- 10 | CONTACTS 11 | ------------------------------------------- 12 | 13 | alessandro.bezzi@arc-team.com 14 | luca.bezzi@arc-team.com 15 | -------------------------------------------------------------------------------- /ppt-gui-package/usr/share/archeos/osm-bundler/linux/icons/info_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/archeos/ppt-gui/4cbe662c458b4df4f43a4a1a8a054ad20f3fc5ce/ppt-gui-package/usr/share/archeos/osm-bundler/linux/icons/info_icon.png -------------------------------------------------------------------------------- /ppt-gui-package/usr/share/archeos/osm-bundler/linux/icons/python_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/archeos/ppt-gui/4cbe662c458b4df4f43a4a1a8a054ad20f3fc5ce/ppt-gui-package/usr/share/archeos/osm-bundler/linux/icons/python_icon.png -------------------------------------------------------------------------------- /ppt-gui-package/usr/share/archeos/osm-bundler/linux/ppt_gui.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # -*- coding: utf-8 -*- 3 | 4 | 5 | import sys, subprocess 6 | from PyQt4 import QtGui 7 | from PyQt4 import QtCore 8 | 9 | #################################################################### 10 | class PPTGUI(QtGui.QWidget): 11 | 12 | 13 | def __init__(self): 14 | super(PPTGUI, self).__init__() 15 | self.tabWidget = QtGui.QTabWidget(self) 16 | self.tabWidget.setGeometry(QtCore.QRect(0, 0, 900, 580)) 17 | self.tabWidget.setObjectName("tabWidget") 18 | self.tab = QtGui.QWidget() 19 | self.tab.setObjectName("tab") 20 | self.tabWidget.addTab(self.tab, "") 21 | self.tab_3 = QtGui.QWidget() 22 | self.tab_3.setObjectName("tab_3") 23 | self.tabWidget.addTab(self.tab_3, "") 24 | self.tab_2 = QtGui.QWidget() 25 | self.tab_2.setObjectName("tab_2") 26 | self.tabWidget.addTab(self.tab_2, "") 27 | self.tab_4 = QtGui.QWidget() 28 | self.tab_4.setObjectName("tab_4") 29 | self.tabWidget.addTab(self.tab_4, "") 30 | self.initUI() 31 | self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), QtGui.QApplication.translate("MainWindow", "1. Run Bundler", None, QtGui.QApplication.UnicodeUTF8)) 32 | self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), QtGui.QApplication.translate("MainWindow", "2. Run CMVS/PMVS", None, QtGui.QApplication.UnicodeUTF8)) 33 | self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), QtGui.QApplication.translate("MainWindow", "or run PMVS without CMVS", None, QtGui.QApplication.UnicodeUTF8)) 34 | self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_4), QtGui.QApplication.translate("MainWindow", "Check Camera Database", None, QtGui.QApplication.UnicodeUTF8)) 35 | def initUI(self): 36 | #################################################################### 37 | 38 | #BUNDLER 39 | # button 1 for pictures directory 40 | self.button1 = QtGui.QPushButton('Select Photos Path', self.tab) 41 | self.button1.setFocusPolicy(QtCore.Qt.NoFocus) 42 | self.button1.move(20, 30) 43 | self.connect(self.button1, QtCore.SIGNAL('clicked()'), self.showDialog1) 44 | self.setFocus() 45 | 46 | # directory path label 47 | self.label9 = QtGui.QLabel('path:', self.tab) 48 | self.label9.move(190, 34) 49 | 50 | self.text4 = QtGui.QLineEdit(self.tab) 51 | self.text4.move(235, 30) 52 | self.text4.resize(550, 27) 53 | 54 | # help button select directory 55 | self.help_button1 = QtGui.QPushButton("", self.tab) 56 | self.help_button1.setIcon(QtGui.QIcon('icons/info_icon.png')) 57 | self.help_button1.setFocusPolicy(QtCore.Qt.NoFocus) 58 | self.help_button1.move(800, 26) 59 | self.connect(self.help_button1, QtCore.SIGNAL('clicked()'), self.on_help1_clicked) 60 | self.setFocus() 61 | 62 | # features extractor combo 63 | self.label16 = QtGui.QLabel('Select Feature Extractor:', self.tab) 64 | self.label16.move(20, 84) 65 | 66 | self.text15 = QtGui.QLineEdit("siftvlfeat", self.tab) 67 | self.text15.setReadOnly(True) 68 | self.combo = QtGui.QComboBox(self.tab) 69 | self.combo.addItem("siftvlfeat") 70 | self.combo.addItem("siftlowe") 71 | self.combo.move(200, 80) 72 | self.text15.move(360, 100) 73 | self.text15.resize(0, 0) 74 | 75 | self.connect(self.combo, QtCore.SIGNAL('activated(QString)'), self.onActivated) 76 | 77 | # help button features extractor 78 | self.help_button2 = QtGui.QPushButton("", self.tab) 79 | self.help_button2.setIcon(QtGui.QIcon('icons/info_icon.png')) 80 | self.help_button2.setFocusPolicy(QtCore.Qt.NoFocus) 81 | self.help_button2.move(300, 76) 82 | self.connect(self.help_button2, QtCore.SIGNAL('clicked()'), self.on_help2_clicked) 83 | self.setFocus() 84 | 85 | # image width 86 | 87 | self.cb1 = QtGui.QCheckBox('Set desired Photos Width:', self.tab) 88 | self.cb1.setFocusPolicy(QtCore.Qt.NoFocus) 89 | self.cb1.move(380, 80) 90 | self.cb1.toggle() 91 | self.connect(self.cb1, QtCore.SIGNAL('stateChanged(int)'), self.changesize1) 92 | 93 | self.text13 = QtGui.QLineEdit('1200', self.tab) 94 | self.text13.move(600, 78) 95 | self.text13.resize(70, 27) 96 | 97 | # help button width 98 | self.help_button3 = QtGui.QPushButton("", self.tab) 99 | self.help_button3.setIcon(QtGui.QIcon('icons/info_icon.png')) 100 | self.help_button3.setFocusPolicy(QtCore.Qt.NoFocus) 101 | self.help_button3.move(720, 76) 102 | self.connect(self.help_button3, QtCore.SIGNAL('clicked()'), self.on_help3_clicked) 103 | self.setFocus() 104 | 105 | # image resize 106 | self.cb2 = QtGui.QCheckBox('Scale Photos with a Scaling Factor', self.tab) 107 | self.cb2.setFocusPolicy(QtCore.Qt.NoFocus) 108 | self.cb2.move(380, 130) 109 | self.cb2.toggle() 110 | self.cb2.setChecked(False) 111 | self.connect(self.cb2, QtCore.SIGNAL('stateChanged(int)'), self.changesize2) 112 | 113 | self.text11 = QtGui.QLineEdit("1", self.tab) 114 | self.text11.setReadOnly(True) 115 | self.combo2 = QtGui.QComboBox(self.tab) 116 | self.combo2.hide() 117 | self.combo2.addItem("1") 118 | self.combo2.addItem("0.75") 119 | self.combo2.addItem("0.5") 120 | self.combo2.addItem("0.25") 121 | self.combo2.move(650, 130) 122 | self.text11.move(390, 100) 123 | self.text11.resize(0, 0) 124 | 125 | self.connect(self.combo2, QtCore.SIGNAL('activated(QString)'), self.onActivated2) 126 | 127 | # help button resize 128 | self.help_button4 = QtGui.QPushButton("", self.tab) 129 | self.help_button4.setIcon(QtGui.QIcon('icons/info_icon.png')) 130 | self.help_button4.setFocusPolicy(QtCore.Qt.NoFocus) 131 | self.help_button4.move(720, 126) 132 | self.connect(self.help_button4, QtCore.SIGNAL('clicked()'), self.on_help4_clicked) 133 | self.setFocus() 134 | 135 | # button 4 for start bundler 136 | self.button4 = QtGui.QPushButton('Run', self.tab) 137 | self.button4.setIcon(QtGui.QIcon('icons/python_icon.png')) 138 | self.button4.move(20, 180) 139 | self.connect(self.button4, QtCore.SIGNAL('clicked()'), self.startbundler) 140 | 141 | self.text2 = QtGui.QLineEdit(self.tab) 142 | self.text2.move(120, 184) 143 | self.text2.setReadOnly(True) 144 | self.text2.resize(760, 27) 145 | 146 | self.connect(self.text4, QtCore.SIGNAL('textChanged(QString)'), self.onChangedpathbundler) 147 | self.connect(self.text15, QtCore.SIGNAL('textChanged(QString)'), self.onChangedextractor) 148 | self.connect(self.text13, QtCore.SIGNAL('textChanged(QString)'), self.onChangedwidth) 149 | self.connect(self.text11, QtCore.SIGNAL('textChanged(QString)'), self.onChangedsize) 150 | 151 | #output 152 | 153 | self.line1 = QtGui.QFrame(self.tab) 154 | self.line1.setGeometry(QtCore.QRect(10, 220, 880, 20)) 155 | self.line1.setFrameShape(QtGui.QFrame.HLine) 156 | self.line1.setFrameShadow(QtGui.QFrame.Sunken) 157 | self.line1.setObjectName("line1") 158 | 159 | self.label20 = QtGui.QLabel('Output Bundler:', self.tab) 160 | self.label20.move(20, 240) 161 | 162 | self.output1 = QtGui.QTextBrowser(self.tab) 163 | self.output1.move(20, 264) 164 | self.output1.resize(850, 270) 165 | self.output1.setAcceptRichText(True) 166 | self.output1.setAutoFormatting(QtGui.QTextEdit.AutoBulletList) 167 | 168 | 169 | # CMVS/PMVS 170 | # button 2 for Bundler output directory 171 | 172 | self.button2 = QtGui.QPushButton('Select Bundler Output Path', self.tab_3) 173 | self.button2.setFocusPolicy(QtCore.Qt.NoFocus) 174 | self.button2.move(20, 30) 175 | self.connect(self.button2, QtCore.SIGNAL('clicked()'), self.showDialog2) 176 | self.setFocus() 177 | 178 | # directory output path label 179 | self.label10 = QtGui.QLabel('path:', self.tab_3) 180 | self.label10.move(240, 34) 181 | 182 | self.text3 = QtGui.QLineEdit(self.tab_3) 183 | self.text3.move(285, 30) 184 | self.text3.resize(500, 27) 185 | 186 | # help button 5 select bundler output directory 187 | self.help_button5 = QtGui.QPushButton("", self.tab_3) 188 | self.help_button5.setIcon(QtGui.QIcon('icons/info_icon.png')) 189 | self.help_button5.setFocusPolicy(QtCore.Qt.NoFocus) 190 | self.help_button5.move(800, 26) 191 | self.connect(self.help_button5, QtCore.SIGNAL('clicked()'), self.on_help5_clicked) 192 | self.setFocus() 193 | 194 | # number images for cluster 195 | self.label11 = QtGui.QLabel('Number of Photos in each Cluster:', self.tab_3) 196 | self.label11.move(240, 84) 197 | 198 | self.text5 = QtGui.QLineEdit('10', self.tab_3) 199 | self.text5.move(490, 82) 200 | self.text5.resize(70, 27) 201 | 202 | # help button 6 select bundler output directory 203 | self.help_button6 = QtGui.QPushButton("", self.tab_3) 204 | self.help_button6.setIcon(QtGui.QIcon('icons/info_icon.png')) 205 | self.help_button6.setFocusPolicy(QtCore.Qt.NoFocus) 206 | self.help_button6.move(580, 79) 207 | self.connect(self.help_button6, QtCore.SIGNAL('clicked()'), self.on_help6_clicked) 208 | self.setFocus() 209 | 210 | # button run CMVS 211 | self.button5 = QtGui.QPushButton('Run', self.tab_3) 212 | self.button5.setIcon(QtGui.QIcon('icons/python_icon.png')) 213 | self.button5.move(20, 130) 214 | self.connect(self.button5, QtCore.SIGNAL('clicked()'), self.startcmvs) 215 | 216 | self.text6 = QtGui.QLineEdit(self.tab_3) 217 | self.text6.move(120, 134) 218 | self.text6.setReadOnly(True) 219 | self.text6.resize(760, 27) 220 | 221 | self.connect(self.text3, QtCore.SIGNAL('textChanged(QString)'), self.onChangedpathcmvs) 222 | self.connect(self.text5, QtCore.SIGNAL('textChanged(QString)'), self.onChangedcluster) 223 | 224 | #output 225 | 226 | self.line3 = QtGui.QFrame(self.tab_3) 227 | self.line3.setGeometry(QtCore.QRect(10, 220, 880, 20)) 228 | self.line3.setFrameShape(QtGui.QFrame.HLine) 229 | self.line3.setFrameShadow(QtGui.QFrame.Sunken) 230 | self.line3.setObjectName("line3") 231 | 232 | self.label21 = QtGui.QLabel('Output CMVS/PMVS:', self.tab_3) 233 | self.label21.move(20, 240) 234 | 235 | self.output2 = QtGui.QTextBrowser(self.tab_3) 236 | self.output2.move(20, 264) 237 | self.output2.resize(850, 270) 238 | self.output2.setAcceptRichText(True) 239 | self.output2.setAutoFormatting(QtGui.QTextEdit.AutoBulletList) 240 | 241 | # run only PMVS 242 | self.cb3 = QtGui.QCheckBox('Use directly PMVS2 (without CMVS):', self.tab_2) 243 | self.cb3.setFocusPolicy(QtCore.Qt.NoFocus) 244 | self.cb3.move(20, 30) 245 | self.cb3.toggle() 246 | self.cb3.setChecked(False) 247 | self.connect(self.cb3, QtCore.SIGNAL('stateChanged(int)'), self.openpmvs) 248 | 249 | # button 3 for output directory 250 | self.button3 = QtGui.QPushButton('Select Bundler Output Path', self.tab_2) 251 | self.button3.setFocusPolicy(QtCore.Qt.NoFocus) 252 | self.button3.move(20, 80) 253 | self.button3.hide() 254 | self.connect(self.button3, QtCore.SIGNAL('clicked()'), self.showDialog3) 255 | self.setFocus() 256 | 257 | # directory output path label 258 | self.label14 = QtGui.QLabel('path:', self.tab_2) 259 | self.label14.move(240, 84) 260 | self.label14.hide() 261 | 262 | self.text7 = QtGui.QLineEdit(self.tab_2) 263 | self.text7.move(280, 80) 264 | self.text7.hide() 265 | self.text7.resize(500, 27) 266 | 267 | # help button 7 select bundler output directory 268 | self.help_button7 = QtGui.QPushButton("", self.tab_2) 269 | self.help_button7.setIcon(QtGui.QIcon('icons/info_icon.png')) 270 | self.help_button7.setFocusPolicy(QtCore.Qt.NoFocus) 271 | self.help_button7.move(800, 76) 272 | self.help_button7.hide() 273 | self.connect(self.help_button7, QtCore.SIGNAL('clicked()'), self.on_help5_clicked) 274 | self.setFocus() 275 | 276 | # run PMVS 277 | self.button6 = QtGui.QPushButton('Run', self.tab_2) 278 | self.button6.setIcon(QtGui.QIcon('icons/python_icon.png')) 279 | self.button6.move(20, 130) 280 | self.button6.hide() 281 | self.connect(self.button6, QtCore.SIGNAL('clicked()'), self.startpmvs) 282 | 283 | self.text8 = QtGui.QLineEdit(self.tab_2) 284 | self.text8.move(120, 134) 285 | self.text8.setReadOnly(True) 286 | self.text8.hide() 287 | self.text8.resize(760, 27) 288 | 289 | self.connect(self.text7, QtCore.SIGNAL('textChanged(QString)'), self.onChangedpathpmvs) 290 | 291 | #output 292 | 293 | self.line2 = QtGui.QFrame(self.tab_2) 294 | self.line2.setGeometry(QtCore.QRect(10, 220, 880, 20)) 295 | self.line2.setFrameShape(QtGui.QFrame.HLine) 296 | self.line2.setFrameShadow(QtGui.QFrame.Sunken) 297 | self.line2.setObjectName("line2") 298 | 299 | self.label22 = QtGui.QLabel('Output PMVS:', self.tab_2) 300 | self.label22.move(20, 240) 301 | 302 | self.output3 = QtGui.QTextBrowser(self.tab_2) 303 | self.output3.move(20, 264) 304 | self.output3.resize(850, 270) 305 | self.output3.setAcceptRichText(True) 306 | self.output3.setAutoFormatting(QtGui.QTextEdit.AutoBulletList) 307 | 308 | 309 | # Set Camera Database 310 | 311 | # button 1 for pictures directory 312 | self.button8 = QtGui.QPushButton('Select Photos Path', self.tab_4) 313 | self.button8.setFocusPolicy(QtCore.Qt.NoFocus) 314 | self.button8.move(20, 30) 315 | self.connect(self.button8, QtCore.SIGNAL('clicked()'), self.showDialog4) 316 | self.setFocus() 317 | 318 | # directory path label 319 | self.label12 = QtGui.QLabel('path:', self.tab_4) 320 | self.label12.move(190, 34) 321 | 322 | self.text9 = QtGui.QLineEdit(self.tab_4) 323 | self.text9.move(235, 30) 324 | self.text9.resize(550, 27) 325 | 326 | # help button select directory 327 | self.help_button9 = QtGui.QPushButton("", self.tab_4) 328 | self.help_button9.setIcon(QtGui.QIcon('icons/info_icon.png')) 329 | self.help_button9.setFocusPolicy(QtCore.Qt.NoFocus) 330 | self.help_button9.move(800, 26) 331 | self.connect(self.help_button9, QtCore.SIGNAL('clicked()'), self.on_help9_clicked) 332 | self.setFocus() 333 | 334 | # button run Camera Database 335 | self.button10 = QtGui.QPushButton('Run', self.tab_4) 336 | self.button10.setIcon(QtGui.QIcon('icons/python_icon.png')) 337 | self.button10.move(20, 80) 338 | self.connect(self.button10, QtCore.SIGNAL('clicked()'), self.startcamdat) 339 | 340 | self.text10 = QtGui.QLineEdit(self.tab_4) 341 | self.text10.move(120, 84) 342 | self.text10.setReadOnly(True) 343 | self.text10.resize(760, 27) 344 | 345 | self.connect(self.text9, QtCore.SIGNAL('textChanged(QString)'), self.onChangedpathcamdat) 346 | 347 | #output 348 | 349 | self.line4 = QtGui.QFrame(self.tab_4) 350 | self.line4.setGeometry(QtCore.QRect(10, 220, 880, 20)) 351 | self.line4.setFrameShape(QtGui.QFrame.HLine) 352 | self.line4.setFrameShadow(QtGui.QFrame.Sunken) 353 | self.line4.setObjectName("line1") 354 | 355 | self.label23 = QtGui.QLabel('Output Camera Database:', self.tab_4) 356 | self.label23.move(20, 240) 357 | 358 | self.output4 = QtGui.QTextBrowser(self.tab_4) 359 | self.output4.move(20, 264) 360 | self.output4.resize(850, 270) 361 | self.output4.setAcceptRichText(True) 362 | self.output4.setAutoFormatting(QtGui.QTextEdit.AutoBulletList) 363 | 364 | 365 | #################################################################### 366 | self.setWindowTitle('Python Photogrammetry Toolbox GUI v 0.1') 367 | self.setGeometry(300, 300, 900, 580) 368 | self.setWindowIcon(QtGui.QIcon('icons/python_icon.png')) 369 | #################################################################### 370 | 371 | # select directory with photos 372 | def showDialog1(self): 373 | directoryname = QtGui.QFileDialog.getExistingDirectory(self, 'Open directory with photos', '/home') 374 | self.text4.setText(directoryname) 375 | 376 | # combo vlfeat-sift 377 | def onActivated(self, text): 378 | self.text15.setText(text) 379 | 380 | # combo size-image 381 | def onActivated2(self, text): 382 | self.text11.setText(text) 383 | 384 | # width-size select 385 | def changesize1(self, value): 386 | if self.cb1.isChecked(): 387 | self.combo2.hide() 388 | self.text13.show() 389 | self.cb2.setChecked(False) 390 | self.text2.setText("python ./RunBundler.py --photos=" + self.text4.displayText() + " --featureExtractor=" + self.text15.displayText()+ " --maxPhotoDimension=" + self.text13.displayText()) 391 | 392 | def changesize2(self, text): 393 | if self.cb2.isChecked(): 394 | self.combo2.show() 395 | self.text13.hide() 396 | self.cb1.setChecked(False) 397 | self.text2.setText("python ./RunBundler.py --photos=" + self.text4.displayText() + " --featureExtractor=" + self.text15.displayText()+ " --photoScalingFactor=" + self.text11.displayText()) 398 | 399 | # start bundler 400 | def startbundler(self): 401 | command = self.text2.displayText() 402 | proc = subprocess.Popen((str(command)), shell=True, stdout=subprocess.PIPE) 403 | output = proc.stdout.read() 404 | self.output1.append(str(output)) 405 | 406 | # help button 1 - select directory 407 | def on_help1_clicked(self): 408 | QtGui.QMessageBox.information(self, "Help!", "Select the directory with original photos. Pictures have to be in JPG file format.", QtGui.QMessageBox.Ok) 409 | 410 | # help button 2 - feature extractor 411 | def on_help2_clicked(self): 412 | QtGui.QMessageBox.information(self, "Help!", "Select the feature extractore between VLFEAT and SIFT. \n\nVLFEAT (http://www.vlfeat.org/) is released under GPL v.2 license. \n\nSIFT (http://www.cs.ubc.ca/~lowe/keypoints/) is being made available for individual research use only. Any commercial use or any redistribution of this software requires a license from the University of British Columbia. Before use SIFT download and copy the binary into the folder.", QtGui.QMessageBox.Ok) 413 | 414 | # help button 3 - feature extractor 415 | def on_help3_clicked(self): 416 | QtGui.QMessageBox.information(self, "Help!", "Copy of a photo will be scaled down if either width or height exceeds the value insert in . After scaling the maximum of width and height will be equal to the value insert in . \n\nDefault value is 1200: an image of 3008x2000 px will be scale into a copy of 1200x798 px.", QtGui.QMessageBox.Ok) 417 | 418 | # help button 4 - feature extractor 419 | def on_help4_clicked(self): 420 | QtGui.QMessageBox.information(self, "Help!", "Scale all photos to the specified scaling factor: \n\n1 = original size \n\n0.75 = 75% of the original size \n\n0.5 = half size \n\n0.25 = 25% of the original size.", QtGui.QMessageBox.Ok) 421 | 422 | # connection path-command 423 | def onChangedpathbundler(self, text): 424 | if self.cb2.isChecked(): self.text2.setText("python ./RunBundler.py --photos=" + self.text4.displayText() + " --featureExtractor=" + self.text15.displayText()+ " --photoScalingFactor=" + self.text11.displayText()) 425 | if self.cb1.isChecked(): self.text2.setText("python ./RunBundler.py --photos=" + self.text4.displayText() + " --featureExtractor=" + self.text15.displayText()+ " --maxPhotoDimension=" + self.text13.displayText()) 426 | 427 | # connection extractor-command 428 | def onChangedextractor(self, text): 429 | if self.cb2.isChecked(): self.text2.setText("python ./RunBundler.py --photos=" + self.text4.displayText() + " --featureExtractor=" + self.text15.displayText()+ " --photoScalingFactor=" + self.text11.displayText()) 430 | if self.cb1.isChecked(): self.text2.setText("python ./RunBundler.py --photos=" + self.text4.displayText() + " --featureExtractor=" + self.text15.displayText()+ " --maxPhotoDimension=" + self.text13.displayText()) 431 | 432 | # connection width-command 433 | def onChangedwidth(self, text): 434 | self.cb2.setChecked(False) 435 | self.cb1.setChecked(True) 436 | self.text2.setText("python ./RunBundler.py --photos=" + self.text4.displayText() + " --featureExtractor=" + self.text15.displayText()+ " --maxPhotoDimension=" + self.text13.displayText()) 437 | 438 | # connection size-command 439 | def onChangedsize(self, text): 440 | self.cb1.setChecked(False) 441 | self.cb2.setChecked(True) 442 | self.text2.setText("python ./RunBundler.py --photos=" + self.text4.displayText() + " --featureExtractor=" + self.text15.displayText()+ " --photoScalingFactor=" + self.text11.displayText()) 443 | 444 | # select directory with photos 445 | def showDialog2(self): 446 | directoryname = QtGui.QFileDialog.getExistingDirectory(self, 'Open directory with Bundler output files', '/home') 447 | self.text3.setText(directoryname) 448 | 449 | # help button 5 - select directory 450 | def on_help5_clicked(self): 451 | QtGui.QMessageBox.information(self, "Help!", "Select the Bundler output directory.", QtGui.QMessageBox.Ok) 452 | 453 | # connection path-command 454 | def onChangedpathcmvs(self, text): 455 | self.text6.setText("python ./RunCMVS.py --bundlerOutputPath=" + self.text3.displayText() + " --ClusterToCompute=" + self.text5.displayText()) 456 | 457 | # connection number cluster 458 | def onChangedcluster(self, text): 459 | self.text6.setText("python ./RunCMVS.py --bundlerOutputPath=" + self.text3.displayText() + " --ClusterToCompute=" + self.text5.displayText()) 460 | 461 | # help button 6 - cluster 462 | def on_help6_clicked(self): 463 | QtGui.QMessageBox.information(self, "Help!", "Select the max number of photos for each cluster that CMVS should compute. Separated PLY output files will be created. \n\nDepends on the CPUs of your computer: if infinite loop occur, stop the process and try a different value. \n\nDefault value is 10: an image set with 28 photos will be compute in 3 separated clusters.", QtGui.QMessageBox.Ok) 464 | 465 | # start cmvs 466 | def startcmvs(self): 467 | command = self.text6.displayText() 468 | proc = subprocess.Popen((str(command)), shell=True, stdout=subprocess.PIPE) 469 | output = proc.stdout.read() 470 | self.output2.append(str(output)) 471 | 472 | # open pmvs 473 | def openpmvs(self, text): 474 | if self.cb3.isChecked(): 475 | self.button3.show() 476 | self.button6.show() 477 | self.text7.show() 478 | self.text8.show() 479 | self.label14.show() 480 | self.help_button7.show() 481 | else: self.label14.hide(), self.button3.hide(), self.button6.hide(), self.text7.hide(), self.text8.hide(), self.help_button7.hide() 482 | 483 | # select directory with bundler output 484 | def showDialog3(self): 485 | directoryname = QtGui.QFileDialog.getExistingDirectory(self, 'Open directory with Bundler output files', '/home') 486 | self.text7.setText(directoryname) 487 | 488 | # connection path-command 489 | def onChangedpathpmvs(self, text): 490 | self.text8.setText("python ./RunPMVS.py --bundlerOutputPath=" + self.text7.displayText()) 491 | 492 | # start pmvs 493 | def startpmvs(self): 494 | command = self.text8.displayText() 495 | proc = subprocess.Popen((str(command)), shell=True, stdout=subprocess.PIPE) 496 | output = proc.stdout.read() 497 | self.output3.append(str(output)) 498 | 499 | # select directory with photos (Camera Database) 500 | def showDialog4(self): 501 | directoryname = QtGui.QFileDialog.getExistingDirectory(self, 'Open directory with photos', '/home') 502 | self.text9.setText(directoryname) 503 | 504 | # help button 9 - select directory 505 | def on_help9_clicked(self): 506 | QtGui.QMessageBox.information(self, "Help!", "Select the directory with original photos. Pictures have to be in JPG file format. \n\nPress the RUN button to check if the camera is inset inside the database. \n\nIf the camera is not correctly saved, please insert in the terminal windows the CCD width in mm", QtGui.QMessageBox.Ok) 507 | 508 | # connection path-command 509 | def onChangedpathcamdat(self, text): 510 | self.text10.setText("python ./RunBundler.py --photos=" + self.text9.displayText() + " --checkCameraDatabase") 511 | 512 | # start Camera Database 513 | def startcamdat(self): 514 | command = self.text10.displayText() 515 | proc = subprocess.Popen((str(command)), shell=True) 516 | 517 | if __name__ == '__main__': 518 | 519 | app = QtGui.QApplication(sys.argv) 520 | ppt = PPTGUI() 521 | ppt.show() 522 | app.exec_() 523 | -------------------------------------------------------------------------------- /ppt-gui-package/usr/share/doc/ppt-gui/changelog: -------------------------------------------------------------------------------- 1 | python-photogrammetri-toolbox changelog 2 | 3 | 0.1-archeos0.2 4 | * Added changelog 5 | 0.1-archeos0.3 6 | * changed /usr/share/application/ to /usr/share/applications/ 7 | 0.1-archeos0.4 8 | * Fixed Icon: entry in desktop file 9 | 0.1-archeos0.5 10 | * Added check-camera-database function 11 | -------------------------------------------------------------------------------- /ppt-gui-package/usr/share/icons/archeos/48x48/ppt_icon48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/archeos/ppt-gui/4cbe662c458b4df4f43a4a1a8a054ad20f3fc5ce/ppt-gui-package/usr/share/icons/archeos/48x48/ppt_icon48.png -------------------------------------------------------------------------------- /ppt-gui-package/usr/share/icons/archeos/64x64/ppt_icon64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/archeos/ppt-gui/4cbe662c458b4df4f43a4a1a8a054ad20f3fc5ce/ppt-gui-package/usr/share/icons/archeos/64x64/ppt_icon64.png --------------------------------------------------------------------------------