def maskColor(self): print("Masking...") tolerance = 10 tolerance = self.sldTol.value() self.sldTol.setDisabled(True) self.btnCol.setDisabled(True) self.btnP1.setDisabled(True) self.btnQuit.setDisabled(True) chunk = PhotoScan.app.document.chunk mask_list = list() if self.radioBtn_sel.isChecked(): for photo in chunk.cameras: if photo.selected: mask_list.append(photo) elif self.radioBtn_all.isChecked(): mask_list = list(chunk.cameras) if not len(mask_list): PhotoScan.app.messageBox("Nothing to mask!") return False color = self.color red, green, blue = color.red(), color.green(), color.blue() processed = 0 for camera in mask_list: for frame in camera.frames: print(frame) app.processEvents() mask = PhotoScan.utils.createDifferenceMask( frame.photo.image(), (red, green, blue), tolerance, False) m = PhotoScan.Mask() m.setImage(mask) frame.mask = m processed += 1 self.pBar.setValue( int(processed / len(mask_list) / len(chunk.frames) * 100)) print("Masking finished. " + str(processed) + " images masked.") self.sldTol.setDisabled(False) self.btnCol.setDisabled(False) self.btnP1.setDisabled(False) self.btnQuit.setDisabled(False) return True
import PhotoScan as ps import os path = 'PhotoScanProjects/P117_1804_MskHighway_2018_04_09_g201b20087_f001/' mask_path = path + '/Masks' files = os.listdir(mask_path) chunk = ps.app.document.chunk for camera in chunk.cameras: photo = camera.photo path = photo.path slash_index = path.rfind('/') file_name = path[slash_index + 1::] if file_name in files: if camera.mask: print(1) else: print(0) mask = ps.Mask() mask.load(mask_path + '/' + file_name) camera.mask = mask