PaIRS-UniNa 0.2.10__cp313-cp313-macosx_11_0_universal2.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- PaIRS_UniNa/Calibration_Tab.py +347 -0
- PaIRS_UniNa/Changes.txt +174 -0
- PaIRS_UniNa/Custom_Top.py +303 -0
- PaIRS_UniNa/Explorer.py +3322 -0
- PaIRS_UniNa/FolderLoop.py +562 -0
- PaIRS_UniNa/Input_Tab.py +829 -0
- PaIRS_UniNa/Input_Tab_CalVi.py +787 -0
- PaIRS_UniNa/Input_Tab_tools.py +3026 -0
- PaIRS_UniNa/Log_Tab.py +110 -0
- PaIRS_UniNa/Output_Tab.py +922 -0
- PaIRS_UniNa/PaIRS.py +18 -0
- PaIRS_UniNa/PaIRS_PIV.py +873 -0
- PaIRS_UniNa/PaIRS_pypacks.py +1374 -0
- PaIRS_UniNa/Process_Tab.py +1761 -0
- PaIRS_UniNa/Process_Tab_CalVi.py +313 -0
- PaIRS_UniNa/Process_Tab_Disp.py +170 -0
- PaIRS_UniNa/Process_Tab_Min.py +120 -0
- PaIRS_UniNa/ResizePopup.py +55 -0
- PaIRS_UniNa/SPIVCalHelp.py +155 -0
- PaIRS_UniNa/Saving_tools.py +298 -0
- PaIRS_UniNa/TabTools.py +1413 -0
- PaIRS_UniNa/Vis_Tab.py +2176 -0
- PaIRS_UniNa/Vis_Tab_CalVi.py +982 -0
- PaIRS_UniNa/Whatsnew.py +130 -0
- PaIRS_UniNa/_PaIRS_PIV.so +0 -0
- PaIRS_UniNa/__init__.py +6 -0
- PaIRS_UniNa/__main__.py +45 -0
- PaIRS_UniNa/addwidgets_ps.py +1633 -0
- PaIRS_UniNa/calib.py +1488 -0
- PaIRS_UniNa/calibView.py +833 -0
- PaIRS_UniNa/gPaIRS.py +3957 -0
- PaIRS_UniNa/gPalette.py +189 -0
- PaIRS_UniNa/icons/abort.png +0 -0
- PaIRS_UniNa/icons/about.png +0 -0
- PaIRS_UniNa/icons/align_all.png +0 -0
- PaIRS_UniNa/icons/announcement.png +0 -0
- PaIRS_UniNa/icons/automatic_levels_off.png +0 -0
- PaIRS_UniNa/icons/automatic_levels_on.png +0 -0
- PaIRS_UniNa/icons/automatic_off.png +0 -0
- PaIRS_UniNa/icons/automatic_on.png +0 -0
- PaIRS_UniNa/icons/automatic_size_off.png +0 -0
- PaIRS_UniNa/icons/automatic_size_on.png +0 -0
- PaIRS_UniNa/icons/axes.png +0 -0
- PaIRS_UniNa/icons/background.png +0 -0
- PaIRS_UniNa/icons/background_vectors.png +0 -0
- PaIRS_UniNa/icons/bin_off.png +0 -0
- PaIRS_UniNa/icons/bin_on.png +0 -0
- PaIRS_UniNa/icons/browse_file_c.png +0 -0
- PaIRS_UniNa/icons/browse_folder_c.png +0 -0
- PaIRS_UniNa/icons/brush_cursor.png +0 -0
- PaIRS_UniNa/icons/bugfix.png +0 -0
- PaIRS_UniNa/icons/cal_proc.png +0 -0
- PaIRS_UniNa/icons/cal_proc_off.png +0 -0
- PaIRS_UniNa/icons/cal_step.png +0 -0
- PaIRS_UniNa/icons/cal_step_off.png +0 -0
- PaIRS_UniNa/icons/calibrate.png +0 -0
- PaIRS_UniNa/icons/calibration_logo.png +0 -0
- PaIRS_UniNa/icons/change_folder.png +0 -0
- PaIRS_UniNa/icons/change_folder_off.png +0 -0
- PaIRS_UniNa/icons/checklist.png +0 -0
- PaIRS_UniNa/icons/clean.png +0 -0
- PaIRS_UniNa/icons/clean_run.png +0 -0
- PaIRS_UniNa/icons/close.png +0 -0
- PaIRS_UniNa/icons/close_all.png +0 -0
- PaIRS_UniNa/icons/close_project.png +0 -0
- PaIRS_UniNa/icons/close_workspace.png +0 -0
- PaIRS_UniNa/icons/colormap.png +0 -0
- PaIRS_UniNa/icons/colormaps/Accent.png +0 -0
- PaIRS_UniNa/icons/colormaps/BrBG.png +0 -0
- PaIRS_UniNa/icons/colormaps/Dark2.png +0 -0
- PaIRS_UniNa/icons/colormaps/PRGn.png +0 -0
- PaIRS_UniNa/icons/colormaps/Paired.png +0 -0
- PaIRS_UniNa/icons/colormaps/Pastel1.png +0 -0
- PaIRS_UniNa/icons/colormaps/Pastel2.png +0 -0
- PaIRS_UniNa/icons/colormaps/PiYG.png +0 -0
- PaIRS_UniNa/icons/colormaps/PuOr.png +0 -0
- PaIRS_UniNa/icons/colormaps/RdBu.png +0 -0
- PaIRS_UniNa/icons/colormaps/RdGy.png +0 -0
- PaIRS_UniNa/icons/colormaps/RdYlBu.png +0 -0
- PaIRS_UniNa/icons/colormaps/RdYlGn.png +0 -0
- PaIRS_UniNa/icons/colormaps/Set1.png +0 -0
- PaIRS_UniNa/icons/colormaps/Set2.png +0 -0
- PaIRS_UniNa/icons/colormaps/Set3.png +0 -0
- PaIRS_UniNa/icons/colormaps/Spectral.png +0 -0
- PaIRS_UniNa/icons/colormaps/Wistia.png +0 -0
- PaIRS_UniNa/icons/colormaps/afmhot.png +0 -0
- PaIRS_UniNa/icons/colormaps/autumn.png +0 -0
- PaIRS_UniNa/icons/colormaps/binary.png +0 -0
- PaIRS_UniNa/icons/colormaps/blackVector.png +0 -0
- PaIRS_UniNa/icons/colormaps/blueVector.png +0 -0
- PaIRS_UniNa/icons/colormaps/bone.png +0 -0
- PaIRS_UniNa/icons/colormaps/brg.png +0 -0
- PaIRS_UniNa/icons/colormaps/bwr.png +0 -0
- PaIRS_UniNa/icons/colormaps/cividis.png +0 -0
- PaIRS_UniNa/icons/colormaps/cool.png +0 -0
- PaIRS_UniNa/icons/colormaps/coolwarm.png +0 -0
- PaIRS_UniNa/icons/colormaps/copper.png +0 -0
- PaIRS_UniNa/icons/colormaps/cubehelix.png +0 -0
- PaIRS_UniNa/icons/colormaps/cyanVector.png +0 -0
- PaIRS_UniNa/icons/colormaps/flag.png +0 -0
- PaIRS_UniNa/icons/colormaps/gist_heat.png +0 -0
- PaIRS_UniNa/icons/colormaps/gray.png +0 -0
- PaIRS_UniNa/icons/colormaps/greenVector.png +0 -0
- PaIRS_UniNa/icons/colormaps/hot.png +0 -0
- PaIRS_UniNa/icons/colormaps/hsv.png +0 -0
- PaIRS_UniNa/icons/colormaps/inferno.png +0 -0
- PaIRS_UniNa/icons/colormaps/jet.png +0 -0
- PaIRS_UniNa/icons/colormaps/magentaVector.png +0 -0
- PaIRS_UniNa/icons/colormaps/magma.png +0 -0
- PaIRS_UniNa/icons/colormaps/ocean.png +0 -0
- PaIRS_UniNa/icons/colormaps/pink.png +0 -0
- PaIRS_UniNa/icons/colormaps/plasma.png +0 -0
- PaIRS_UniNa/icons/colormaps/prism.png +0 -0
- PaIRS_UniNa/icons/colormaps/rainbow.png +0 -0
- PaIRS_UniNa/icons/colormaps/redVector.png +0 -0
- PaIRS_UniNa/icons/colormaps/seismic.png +0 -0
- PaIRS_UniNa/icons/colormaps/spring.png +0 -0
- PaIRS_UniNa/icons/colormaps/summer.png +0 -0
- PaIRS_UniNa/icons/colormaps/tab10.png +0 -0
- PaIRS_UniNa/icons/colormaps/tab20.png +0 -0
- PaIRS_UniNa/icons/colormaps/tab20b.png +0 -0
- PaIRS_UniNa/icons/colormaps/tab20c.png +0 -0
- PaIRS_UniNa/icons/colormaps/terrain.png +0 -0
- PaIRS_UniNa/icons/colormaps/twilight.png +0 -0
- PaIRS_UniNa/icons/colormaps/viridis.png +0 -0
- PaIRS_UniNa/icons/colormaps/whiteVector.png +0 -0
- PaIRS_UniNa/icons/colormaps/winter.png +0 -0
- PaIRS_UniNa/icons/colormaps/yellowVector.png +0 -0
- PaIRS_UniNa/icons/common_region.png +0 -0
- PaIRS_UniNa/icons/common_region_off.png +0 -0
- PaIRS_UniNa/icons/completed.png +0 -0
- PaIRS_UniNa/icons/contourf_off.png +0 -0
- PaIRS_UniNa/icons/contourf_on.png +0 -0
- PaIRS_UniNa/icons/copy.png +0 -0
- PaIRS_UniNa/icons/copy_process.png +0 -0
- PaIRS_UniNa/icons/copy_process_off.png +0 -0
- PaIRS_UniNa/icons/copygrid.png +0 -0
- PaIRS_UniNa/icons/cursor_lamp.png +0 -0
- PaIRS_UniNa/icons/cut.png +0 -0
- PaIRS_UniNa/icons/cut_warnings.png +0 -0
- PaIRS_UniNa/icons/darkmode.png +0 -0
- PaIRS_UniNa/icons/debug_run.png +0 -0
- PaIRS_UniNa/icons/delete.png +0 -0
- PaIRS_UniNa/icons/deleteErr.png +0 -0
- PaIRS_UniNa/icons/disp_step.png +0 -0
- PaIRS_UniNa/icons/disp_step_off.png +0 -0
- PaIRS_UniNa/icons/down.png +0 -0
- PaIRS_UniNa/icons/edit_list.png +0 -0
- PaIRS_UniNa/icons/editing.png +0 -0
- PaIRS_UniNa/icons/example_list.png +0 -0
- PaIRS_UniNa/icons/find_all_planes.png +0 -0
- PaIRS_UniNa/icons/find_plane.png +0 -0
- PaIRS_UniNa/icons/flaticon_PaIRS.png +0 -0
- PaIRS_UniNa/icons/flaticon_PaIRS_beta.png +0 -0
- PaIRS_UniNa/icons/flaticon_PaIRS_download.png +0 -0
- PaIRS_UniNa/icons/flaticon_PaIRS_download_warning.png +0 -0
- PaIRS_UniNa/icons/flip_y_off.png +0 -0
- PaIRS_UniNa/icons/flip_y_on.png +0 -0
- PaIRS_UniNa/icons/focusErrr.png +0 -0
- PaIRS_UniNa/icons/folder_loop_cleanup.png +0 -0
- PaIRS_UniNa/icons/folder_loop_cleanup_off.png +0 -0
- PaIRS_UniNa/icons/gear.gif +0 -0
- PaIRS_UniNa/icons/gear.png +0 -0
- PaIRS_UniNa/icons/ger.png +0 -0
- PaIRS_UniNa/icons/greenv.png +0 -0
- PaIRS_UniNa/icons/guide.png +0 -0
- PaIRS_UniNa/icons/icon_CalVi.png +0 -0
- PaIRS_UniNa/icons/icon_PaIRS.png +0 -0
- PaIRS_UniNa/icons/import.png +0 -0
- PaIRS_UniNa/icons/import_set.png +0 -0
- PaIRS_UniNa/icons/information.png +0 -0
- PaIRS_UniNa/icons/information2.png +0 -0
- PaIRS_UniNa/icons/input_logo.png +0 -0
- PaIRS_UniNa/icons/issue.png +0 -0
- PaIRS_UniNa/icons/laser_NTR.png +0 -0
- PaIRS_UniNa/icons/laser_TR_double.png +0 -0
- PaIRS_UniNa/icons/laser_TR_single.png +0 -0
- PaIRS_UniNa/icons/link.png +0 -0
- PaIRS_UniNa/icons/linked.png +0 -0
- PaIRS_UniNa/icons/loaded.png +0 -0
- PaIRS_UniNa/icons/loading_2.gif +0 -0
- PaIRS_UniNa/icons/log_logo.png +0 -0
- PaIRS_UniNa/icons/logo_CalVi.png +0 -0
- PaIRS_UniNa/icons/logo_CalVi_completo.png +0 -0
- PaIRS_UniNa/icons/logo_CalVi_party.png +0 -0
- PaIRS_UniNa/icons/logo_PaIRS.png +0 -0
- PaIRS_UniNa/icons/logo_PaIRS_completo.png +0 -0
- PaIRS_UniNa/icons/logo_PaIRS_download.png +0 -0
- PaIRS_UniNa/icons/logo_PaIRS_party_rect.png +0 -0
- PaIRS_UniNa/icons/logo_PaIRS_rect.png +0 -0
- PaIRS_UniNa/icons/logo_opaco.png +0 -0
- PaIRS_UniNa/icons/mask.png +0 -0
- PaIRS_UniNa/icons/measure.png +0 -0
- PaIRS_UniNa/icons/measure_off.png +0 -0
- PaIRS_UniNa/icons/min_proc.png +0 -0
- PaIRS_UniNa/icons/min_proc_off.png +0 -0
- PaIRS_UniNa/icons/min_step.png +0 -0
- PaIRS_UniNa/icons/min_step_off.png +0 -0
- PaIRS_UniNa/icons/minus.png +0 -0
- PaIRS_UniNa/icons/mirror_u.png +0 -0
- PaIRS_UniNa/icons/mirror_v.png +0 -0
- PaIRS_UniNa/icons/mirror_x.png +0 -0
- PaIRS_UniNa/icons/mirror_y.png +0 -0
- PaIRS_UniNa/icons/mtplt.png +0 -0
- PaIRS_UniNa/icons/new.png +0 -0
- PaIRS_UniNa/icons/new_workspace.png +0 -0
- PaIRS_UniNa/icons/news.png +0 -0
- PaIRS_UniNa/icons/normal_run.png +0 -0
- PaIRS_UniNa/icons/open.png +0 -0
- PaIRS_UniNa/icons/open_image.png +0 -0
- PaIRS_UniNa/icons/open_new_window.png +0 -0
- PaIRS_UniNa/icons/open_result.png +0 -0
- PaIRS_UniNa/icons/open_workspace.png +0 -0
- PaIRS_UniNa/icons/output_logo.png +0 -0
- PaIRS_UniNa/icons/paste_above.png +0 -0
- PaIRS_UniNa/icons/paste_below.png +0 -0
- PaIRS_UniNa/icons/pause.png +0 -0
- PaIRS_UniNa/icons/paused.png +0 -0
- PaIRS_UniNa/icons/pencil_bw.png +0 -0
- PaIRS_UniNa/icons/piv_proc.png +0 -0
- PaIRS_UniNa/icons/piv_proc_off.png +0 -0
- PaIRS_UniNa/icons/piv_step.png +0 -0
- PaIRS_UniNa/icons/piv_step_off.png +0 -0
- PaIRS_UniNa/icons/plane.png +0 -0
- PaIRS_UniNa/icons/play.png +0 -0
- PaIRS_UniNa/icons/plus.png +0 -0
- PaIRS_UniNa/icons/process_logo.png +0 -0
- PaIRS_UniNa/icons/process_loop.png +0 -0
- PaIRS_UniNa/icons/project.png +0 -0
- PaIRS_UniNa/icons/pylog.png +0 -0
- PaIRS_UniNa/icons/python_warning.png +0 -0
- PaIRS_UniNa/icons/queue.png +0 -0
- PaIRS_UniNa/icons/quit.png +0 -0
- PaIRS_UniNa/icons/read.png +0 -0
- PaIRS_UniNa/icons/read_list.png +0 -0
- PaIRS_UniNa/icons/redo.png +0 -0
- PaIRS_UniNa/icons/redx.png +0 -0
- PaIRS_UniNa/icons/reset.png +0 -0
- PaIRS_UniNa/icons/reset_levels.png +0 -0
- PaIRS_UniNa/icons/resize_icon.png +0 -0
- PaIRS_UniNa/icons/restore.png +0 -0
- PaIRS_UniNa/icons/restore_undo.png +0 -0
- PaIRS_UniNa/icons/rotate_clock.png +0 -0
- PaIRS_UniNa/icons/rotate_counter.png +0 -0
- PaIRS_UniNa/icons/rotate_v_clock.png +0 -0
- PaIRS_UniNa/icons/rotate_v_counter.png +0 -0
- PaIRS_UniNa/icons/running.gif +0 -0
- PaIRS_UniNa/icons/running.png +0 -0
- PaIRS_UniNa/icons/running_warn.png +0 -0
- PaIRS_UniNa/icons/sandglass.png +0 -0
- PaIRS_UniNa/icons/save.png +0 -0
- PaIRS_UniNa/icons/save_and_stop.png +0 -0
- PaIRS_UniNa/icons/save_cfg.png +0 -0
- PaIRS_UniNa/icons/saveas.png +0 -0
- PaIRS_UniNa/icons/saveas_workspace.png +0 -0
- PaIRS_UniNa/icons/scale_all.png +0 -0
- PaIRS_UniNa/icons/scale_down.png +0 -0
- PaIRS_UniNa/icons/scale_up.png +0 -0
- PaIRS_UniNa/icons/scan_list.png +0 -0
- PaIRS_UniNa/icons/scan_path.png +0 -0
- PaIRS_UniNa/icons/scan_path_loop.png +0 -0
- PaIRS_UniNa/icons/scan_path_loop_off.png +0 -0
- PaIRS_UniNa/icons/search.png +0 -0
- PaIRS_UniNa/icons/showIW_off.png +0 -0
- PaIRS_UniNa/icons/showIW_on.png +0 -0
- PaIRS_UniNa/icons/show_all.png +0 -0
- PaIRS_UniNa/icons/sort.png +0 -0
- PaIRS_UniNa/icons/sort_reversed.png +0 -0
- PaIRS_UniNa/icons/spiv_proc.png +0 -0
- PaIRS_UniNa/icons/spiv_proc_off.png +0 -0
- PaIRS_UniNa/icons/spiv_setup_no.png +0 -0
- PaIRS_UniNa/icons/spiv_setup_ok.png +0 -0
- PaIRS_UniNa/icons/star.png +0 -0
- PaIRS_UniNa/icons/step_inheritance.png +0 -0
- PaIRS_UniNa/icons/subMIN_off.png +0 -0
- PaIRS_UniNa/icons/subMIN_on.png +0 -0
- PaIRS_UniNa/icons/tom.png +0 -0
- PaIRS_UniNa/icons/trash.png +0 -0
- PaIRS_UniNa/icons/undo.png +0 -0
- PaIRS_UniNa/icons/unedited.png +0 -0
- PaIRS_UniNa/icons/unina_dii.png +0 -0
- PaIRS_UniNa/icons/uninitialized.png +0 -0
- PaIRS_UniNa/icons/unlink.png +0 -0
- PaIRS_UniNa/icons/unwrap_items.png +0 -0
- PaIRS_UniNa/icons/up.png +0 -0
- PaIRS_UniNa/icons/updating_import.gif +0 -0
- PaIRS_UniNa/icons/updating_pairs.gif +0 -0
- PaIRS_UniNa/icons/vectorColor.png +0 -0
- PaIRS_UniNa/icons/vettore.png +0 -0
- PaIRS_UniNa/icons/view.png +0 -0
- PaIRS_UniNa/icons/view_off.png +0 -0
- PaIRS_UniNa/icons/vis_logo.png +0 -0
- PaIRS_UniNa/icons/waiting_circle.png +0 -0
- PaIRS_UniNa/icons/warning.png +0 -0
- PaIRS_UniNa/icons/warning_circle.png +0 -0
- PaIRS_UniNa/icons/window.png +0 -0
- PaIRS_UniNa/icons/workspace.png +0 -0
- PaIRS_UniNa/icons/wrap_items.png +0 -0
- PaIRS_UniNa/icons/write_list.png +0 -0
- PaIRS_UniNa/listLib.py +303 -0
- PaIRS_UniNa/mtfPIV.py +256 -0
- PaIRS_UniNa/parForMulti.py +435 -0
- PaIRS_UniNa/parForWorkers.py +593 -0
- PaIRS_UniNa/pivParFor.py +235 -0
- PaIRS_UniNa/plt_util.py +141 -0
- PaIRS_UniNa/preProcParFor.py +155 -0
- PaIRS_UniNa/procTools.py +1439 -0
- PaIRS_UniNa/readcfg.py +52 -0
- PaIRS_UniNa/rqrdpckgs.txt +9 -0
- PaIRS_UniNa/stereoPivParFor.py +227 -0
- PaIRS_UniNa/tAVarie.py +215 -0
- PaIRS_UniNa/tabSplitter.py +612 -0
- PaIRS_UniNa/ui_Calibration_Tab.py +578 -0
- PaIRS_UniNa/ui_Custom_Top.py +296 -0
- PaIRS_UniNa/ui_Input_Tab.py +1101 -0
- PaIRS_UniNa/ui_Input_Tab_CalVi.py +1283 -0
- PaIRS_UniNa/ui_Log_Tab.py +263 -0
- PaIRS_UniNa/ui_Output_Tab.py +2362 -0
- PaIRS_UniNa/ui_Process_Tab.py +3810 -0
- PaIRS_UniNa/ui_Process_Tab_CalVi.py +1549 -0
- PaIRS_UniNa/ui_Process_Tab_Disp.py +1141 -0
- PaIRS_UniNa/ui_Process_Tab_Min.py +437 -0
- PaIRS_UniNa/ui_ResizePopup.py +204 -0
- PaIRS_UniNa/ui_Vis_Tab.py +1628 -0
- PaIRS_UniNa/ui_Vis_Tab_CalVi.py +1251 -0
- PaIRS_UniNa/ui_Whatsnew.py +132 -0
- PaIRS_UniNa/ui_gPairs.py +877 -0
- PaIRS_UniNa/ui_infoPaIRS.py +551 -0
- PaIRS_UniNa/whatsnew.txt +4 -0
- pairs_unina-0.2.10.dist-info/METADATA +159 -0
- pairs_unina-0.2.10.dist-info/RECORD +333 -0
- pairs_unina-0.2.10.dist-info/WHEEL +5 -0
- pairs_unina-0.2.10.dist-info/top_level.txt +2 -0
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
from .ui_Process_Tab_CalVi import*
|
|
2
|
+
from .TabTools import*
|
|
3
|
+
|
|
4
|
+
DotColor_labels=['Black dot', #0
|
|
5
|
+
'White dot', #1
|
|
6
|
+
]
|
|
7
|
+
|
|
8
|
+
DotTypeSearch_items=['cross-correlation mask', #0
|
|
9
|
+
'top hat mask with tight tails', #1
|
|
10
|
+
'top hat mask with broad tails', #2
|
|
11
|
+
'Gaussian mask', #3
|
|
12
|
+
'interpolation', #4
|
|
13
|
+
'centroid', #5
|
|
14
|
+
]
|
|
15
|
+
DotTypeSearch_order=[i for i in range(len(DotTypeSearch_items))] #************ change here, please!
|
|
16
|
+
|
|
17
|
+
TargetType_items=['single plane', #0
|
|
18
|
+
'double plane', #1
|
|
19
|
+
]
|
|
20
|
+
TargetType_order=[i for i in range(len(TargetType_items))] #************ change here, please!
|
|
21
|
+
|
|
22
|
+
CamMod_items=['polynomial', #0
|
|
23
|
+
'rational', #1
|
|
24
|
+
'tri-polynomial', #2
|
|
25
|
+
'pinhole', #3
|
|
26
|
+
'pinhole + cylinder', #4
|
|
27
|
+
]
|
|
28
|
+
CamMod_order=[i for i in range(len(CamMod_items))] #************ change here, please!
|
|
29
|
+
|
|
30
|
+
CorrMod_items=['a: no correction', #0
|
|
31
|
+
'b: radial distortions', #1
|
|
32
|
+
'c: b + tangential distortions', #2
|
|
33
|
+
'd: c + cylinder origin', #3
|
|
34
|
+
'e: d + cylinder rotation', #4
|
|
35
|
+
'f: e + cylinder radius and thickness', #5
|
|
36
|
+
'g: f + refractive index ratio', #6
|
|
37
|
+
]
|
|
38
|
+
CorrMod_order=[i for i in range(len(CorrMod_items))] #************ change here, please!
|
|
39
|
+
|
|
40
|
+
CalibProcType_items=['standard', #0
|
|
41
|
+
'unknown planes', #1
|
|
42
|
+
'equation of the plane', #2
|
|
43
|
+
'cylinder', #3
|
|
44
|
+
]
|
|
45
|
+
CalibProcType_order=[i for i in range(len(CalibProcType_items))] #************ change here, please!
|
|
46
|
+
|
|
47
|
+
CorrMod_Cyl_items=[ 'a: cylinder origin and rotation', #0
|
|
48
|
+
'b: a + cylinder thickness', #1
|
|
49
|
+
'c: b + refractive index (n) ratio', #2
|
|
50
|
+
'd: b + internal radius', #3
|
|
51
|
+
'e: a + internal radius and n ratio', #4
|
|
52
|
+
'f: all cylinder parameters', #5
|
|
53
|
+
]
|
|
54
|
+
CorrMod_Cyl_order=[i for i in range(len(CorrMod_Cyl_items))] #************ change here, please!
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
spin_tips={
|
|
59
|
+
'DotThresh' : 'Threshold on maximum/minimum value for search of control points',
|
|
60
|
+
'DotDiam' : 'Dot diameter in pixels (search radius is 2.5 times this value)',
|
|
61
|
+
'DotDx' : 'Spacing of dots along x on each level of the target',
|
|
62
|
+
'DotDy' : 'Spacing of dots along y on each level of the target',
|
|
63
|
+
'OriginXShift' : 'Shift of the origin along x on the second level of the target',
|
|
64
|
+
'OriginYShift' : 'Shift of the origin along y on the second level of the target',
|
|
65
|
+
'OriginZShift' : 'Shift of the origin along z on the second level of the target',
|
|
66
|
+
'XDeg' : 'Degree of polynomial along x',
|
|
67
|
+
'YDeg' : 'Degree of polynomial along y',
|
|
68
|
+
'ZDeg' : 'Degree of polynomial along z',
|
|
69
|
+
'PixAR' : 'Pixel aspect ratio (y/x)',
|
|
70
|
+
'PixPitch' : 'Pixel pitch in millimeter units',
|
|
71
|
+
'CylRad' : 'Initial value for cylinder internal radius in mm',
|
|
72
|
+
'CylThick' : 'Initial value for cylinder wall thickness in mm',
|
|
73
|
+
'CylNRatio' : 'Refractive index ratio (fluid/solid wall)',
|
|
74
|
+
}
|
|
75
|
+
check_tips={
|
|
76
|
+
'Plane' : 'Optimize the plane constants',
|
|
77
|
+
'Pinhole' : 'Optimize the pinhole parameters',
|
|
78
|
+
'SaveLOS' : 'Save physical coordinates of the intersections of the lines of sight with the cylinder',
|
|
79
|
+
}
|
|
80
|
+
radio_tips={}
|
|
81
|
+
line_edit_tips={}
|
|
82
|
+
button_tips={
|
|
83
|
+
'DotColor' : 'White/black dot in the image',
|
|
84
|
+
'tool_CollapBox_Target' : 'Graphics',
|
|
85
|
+
'CollapBox_Target' : 'Graphics',
|
|
86
|
+
'tool_CollapBox_CalPar' : 'Graphics',
|
|
87
|
+
'CollapBox_CalPar' : 'Graphics',
|
|
88
|
+
}
|
|
89
|
+
combo_tips={
|
|
90
|
+
'DotTypeSearch' : 'Type of search for control points',
|
|
91
|
+
'TargetType' : 'Type of target (single or double plane)',
|
|
92
|
+
'CalibProcType' : 'Type of calibration procedure',
|
|
93
|
+
'CamMod' : 'Type of mapping function',
|
|
94
|
+
'CorrMod' : 'Parameters of the correction to be optimized',
|
|
95
|
+
'CorrMod_Cyl' : 'Cylinder parameters of the correction to be optimized',
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
class PROpar_CalVi(TABpar):
|
|
99
|
+
def __init__(self,Process=ProcessTypes.null,Step=StepTypes.null):
|
|
100
|
+
self.setup(Process,Step)
|
|
101
|
+
super().__init__('PROpar_CalVi','Process_CalVi')
|
|
102
|
+
self.unchecked_fields+=['FlagTarget_reset','FlagCalib_reset']
|
|
103
|
+
|
|
104
|
+
def setup(self,Process,Step):
|
|
105
|
+
self.Process = Process
|
|
106
|
+
self.Step = Step
|
|
107
|
+
|
|
108
|
+
#***Dot
|
|
109
|
+
self.DotColor=0
|
|
110
|
+
self.DotTypeSearch=0
|
|
111
|
+
self.DotThresh=0.5
|
|
112
|
+
self.DotDiam=10
|
|
113
|
+
|
|
114
|
+
#***Type of target
|
|
115
|
+
self.TargetType=0
|
|
116
|
+
self.DotDx=5
|
|
117
|
+
self.DotDy=5
|
|
118
|
+
#double plane target
|
|
119
|
+
self.OriginXShift=2.5
|
|
120
|
+
self.OriginYShift=2.5
|
|
121
|
+
self.OriginZShift=2.5
|
|
122
|
+
|
|
123
|
+
#***Calibration procedure
|
|
124
|
+
self.CalibProcType=0 #standard
|
|
125
|
+
self.FlagPlane=0
|
|
126
|
+
self.FlagPinhole=1
|
|
127
|
+
|
|
128
|
+
#***Camera calibration model
|
|
129
|
+
self.CamMod=3
|
|
130
|
+
#polynomials/rational functions
|
|
131
|
+
self.XDeg=2
|
|
132
|
+
self.YDeg=2
|
|
133
|
+
self.ZDeg=2
|
|
134
|
+
#pinhole
|
|
135
|
+
self.PixAR=1
|
|
136
|
+
self.PixPitch=0.0065
|
|
137
|
+
#correction model
|
|
138
|
+
self.CorrMod=2 #radial+tangential distortions
|
|
139
|
+
#cylinder parameters
|
|
140
|
+
self.CylRad=30
|
|
141
|
+
self.CylThick=2
|
|
142
|
+
self.CylNRatio=1
|
|
143
|
+
#correction model cylinder
|
|
144
|
+
self.CorrMod_Cyl=0 #cylinder origin and rotation
|
|
145
|
+
self.FlagSaveLOS=0
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
class Process_Tab_CalVi(gPaIRS_Tab):
|
|
149
|
+
class Process_Tab_Signals(gPaIRS_Tab.Tab_Signals):
|
|
150
|
+
pass
|
|
151
|
+
|
|
152
|
+
def __init__(self,parent: QWidget =None, flagInit= __name__ == "__main__"):
|
|
153
|
+
super().__init__(parent,Ui_ProcessTab_CalVi,PROpar_CalVi)
|
|
154
|
+
self.signals=self.Process_Tab_Signals(self)
|
|
155
|
+
|
|
156
|
+
#------------------------------------- Graphical interface: widgets
|
|
157
|
+
self.TABname='Process_CalVi'
|
|
158
|
+
self.ui: Ui_ProcessTab_CalVi
|
|
159
|
+
|
|
160
|
+
#necessary to change the name and the order of the items
|
|
161
|
+
for g in list(globals()):
|
|
162
|
+
if '_items' in g or '_ord' in g or '_tips' in g:
|
|
163
|
+
#pri.Info.blue(f'Adding {g} to {self.name_tab}')
|
|
164
|
+
setattr(self,g,eval(g))
|
|
165
|
+
|
|
166
|
+
if __name__ == "__main__":
|
|
167
|
+
self.app=app
|
|
168
|
+
setAppGuiPalette(self)
|
|
169
|
+
|
|
170
|
+
#------------------------------------- Graphical interface: miscellanea
|
|
171
|
+
self.Flag_CYLINDERCAL_option=None
|
|
172
|
+
self.Flag_CYLINDERCAL=True
|
|
173
|
+
|
|
174
|
+
#------------------------------------- Declaration of parameters
|
|
175
|
+
self.PROpar_base=PROpar_CalVi()
|
|
176
|
+
self.PROpar:PROpar_CalVi=self.TABpar
|
|
177
|
+
self.PROpar_old:PROpar_CalVi=self.TABpar_old
|
|
178
|
+
|
|
179
|
+
#------------------------------------- Callbacks
|
|
180
|
+
self.defineWidgets()
|
|
181
|
+
self.setupWid() #---------------- IMPORTANT
|
|
182
|
+
|
|
183
|
+
self.defineCallbacks()
|
|
184
|
+
self.connectCallbacks()
|
|
185
|
+
|
|
186
|
+
self.defineSettings()
|
|
187
|
+
|
|
188
|
+
self.adjustTABpar=self.adjustPROpar
|
|
189
|
+
self.setTABlayout=self.setPROlayout
|
|
190
|
+
|
|
191
|
+
#------------------------------------- Initializing
|
|
192
|
+
if flagInit:
|
|
193
|
+
self.initialize()
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
def initialize(self):
|
|
197
|
+
pri.Info.yellow(f'{"*"*20} PROCESS CalVi initialization {"*"*20}')
|
|
198
|
+
self.setTABpar(FlagAdjustPar=True,FlagBridge=False)
|
|
199
|
+
self.add_TABpar('initialization')
|
|
200
|
+
self.setFocus()
|
|
201
|
+
|
|
202
|
+
#*************************************************** Adjusting parameters
|
|
203
|
+
def adjustPROpar(self):
|
|
204
|
+
if self.PROpar.CalibProcType!=self.PROpar_old.CalibProcType:
|
|
205
|
+
if self.PROpar.CalibProcType==0:
|
|
206
|
+
self.PROpar.FlagPlane=True
|
|
207
|
+
elif self.PROpar.CalibProcType==3:
|
|
208
|
+
self.PROpar.FlagPlane=False
|
|
209
|
+
self.PROpar.FlagPinhole=False
|
|
210
|
+
self.adjustCalibProcType()
|
|
211
|
+
self.adjustCorrMod()
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
#*************************************************** Layout
|
|
215
|
+
def setPROlayout(self):
|
|
216
|
+
#pri.Time.blue(1,'setPROpar: Beginning')
|
|
217
|
+
self.ui.w_DoublePlane.setVisible(self.PROpar.TargetType!=0)
|
|
218
|
+
|
|
219
|
+
if bool(self.Flag_CYLINDERCAL_option):
|
|
220
|
+
self.Flag_CYLINDERCAL_option.setEnabled(self.PROpar.CalibProcType!=3)
|
|
221
|
+
|
|
222
|
+
#check_Plane
|
|
223
|
+
self.ui.check_Plane.setText(f'{"Show" if self.PROpar.CalibProcType==0 else "Opt."} plane const.')
|
|
224
|
+
self.ui.check_Plane.setEnabled(self.PROpar.CalibProcType not in (1,2))
|
|
225
|
+
|
|
226
|
+
#check_Pinhole
|
|
227
|
+
self.ui.check_Pinhole.setEnabled(self.PROpar.CalibProcType==3)
|
|
228
|
+
|
|
229
|
+
#combo_CamMod
|
|
230
|
+
self.ui.combo_CamMod.clear()
|
|
231
|
+
flagEnabled=True
|
|
232
|
+
if self.PROpar.CalibProcType==0:
|
|
233
|
+
for it in CamMod_items:
|
|
234
|
+
self.ui.combo_CamMod.addItem(it)
|
|
235
|
+
elif self.PROpar.CalibProcType in (1,2): #unknwon planes (2) compatible with cylinder ?
|
|
236
|
+
self.ui.combo_CamMod.addItem(CamMod_items[3])
|
|
237
|
+
flagEnabled=False
|
|
238
|
+
elif self.PROpar.CalibProcType==3:
|
|
239
|
+
self.ui.combo_CamMod.addItem(CamMod_items[-1])
|
|
240
|
+
flagEnabled=False
|
|
241
|
+
self.ui.combo_CamMod.setEnabled(flagEnabled)
|
|
242
|
+
|
|
243
|
+
#stacked_Widget
|
|
244
|
+
FlagCamMod=self.PROpar.CamMod>=3
|
|
245
|
+
self.ui.w_CamMod_par.setCurrentIndex(int(FlagCamMod))
|
|
246
|
+
self.ui.check_Plane.setVisible(FlagCamMod)
|
|
247
|
+
self.ui.check_Pinhole.setVisible(FlagCamMod)
|
|
248
|
+
self.ui.w_CamMod_par.setEnabled(self.PROpar.CamMod < 3 or self.PROpar.FlagPinhole)
|
|
249
|
+
|
|
250
|
+
#combo_corrMod
|
|
251
|
+
self.ui.w_CylPar.setVisible(self.PROpar.CamMod==4)
|
|
252
|
+
FlagCorrMod=self.PROpar.CamMod >= 3 and self.PROpar.FlagPinhole
|
|
253
|
+
self.ui.combo_CorrMod.setVisible(FlagCorrMod)
|
|
254
|
+
self.ui.label_CorrMod.setVisible(FlagCorrMod)
|
|
255
|
+
if FlagCorrMod:
|
|
256
|
+
self.ui.combo_CorrMod.clear()
|
|
257
|
+
if self.PROpar.CalibProcType==0 and self.PROpar.CamMod==4: l=len(CorrMod_items)
|
|
258
|
+
else: l=3
|
|
259
|
+
for it in CorrMod_items[:l]:
|
|
260
|
+
self.ui.combo_CorrMod.addItem(it)
|
|
261
|
+
self.ui.w_CalibProc_Cyl.setVisible(self.PROpar.CalibProcType==3)
|
|
262
|
+
|
|
263
|
+
#*************************************************** Target parameters
|
|
264
|
+
#******************** Actions
|
|
265
|
+
def button_DotColor_action(self):
|
|
266
|
+
if self.ui.button_DotColor.text()==DotColor_labels[0]: self.PROpar.DotColor=1
|
|
267
|
+
else: self.PROpar.DotColor=0
|
|
268
|
+
|
|
269
|
+
#******************** Settings
|
|
270
|
+
def button_DotColor_set(self):
|
|
271
|
+
self.ui.button_DotColor.setText(DotColor_labels[self.PROpar.DotColor])
|
|
272
|
+
|
|
273
|
+
#*************************************************** Calibration parameters
|
|
274
|
+
#******************** Actions
|
|
275
|
+
def check_SaveLOS_action(self):
|
|
276
|
+
if self.ui.check_SaveLOS.isChecked():
|
|
277
|
+
warningDialog(self,'Please notice that the feature to save the lines-of-sight (LOS) data to the disk is not currently available!\n\nContact the authors via email if interested.')
|
|
278
|
+
|
|
279
|
+
#******************** Adjusting
|
|
280
|
+
def adjustCalibProcType(self):
|
|
281
|
+
if self.PROpar.CalibProcType in (1,2):
|
|
282
|
+
self.PROpar.FlagPlane=True
|
|
283
|
+
|
|
284
|
+
if self.PROpar.CalibProcType!=3:
|
|
285
|
+
self.PROpar.FlagPinhole=self.PROpar.CalibProcType<2
|
|
286
|
+
|
|
287
|
+
if self.PROpar.CalibProcType in (1,2) and self.PROpar.CamMod!=3:
|
|
288
|
+
self.PROpar.CamMod=3
|
|
289
|
+
elif self.PROpar.CalibProcType==3:
|
|
290
|
+
self.PROpar.CamMod=4
|
|
291
|
+
|
|
292
|
+
def adjustCorrMod(self):
|
|
293
|
+
if not(self.PROpar.CalibProcType==0 and self.PROpar.CamMod==4) and self.PROpar.CorrMod>2:
|
|
294
|
+
self.PROpar.CorrMod=2
|
|
295
|
+
|
|
296
|
+
#*************************************************** From Parameters to UI
|
|
297
|
+
def setCYLPARDebug(self):
|
|
298
|
+
self.ui.combo_CalibProcType.clear()
|
|
299
|
+
if self.Flag_CYLINDERCAL: l=len(CalibProcType_items)
|
|
300
|
+
else: l=len(CalibProcType_items)-1
|
|
301
|
+
for it in CalibProcType_items[:l]:
|
|
302
|
+
self.ui.combo_CalibProcType.addItem(it)
|
|
303
|
+
|
|
304
|
+
if __name__ == "__main__":
|
|
305
|
+
import sys
|
|
306
|
+
app=QApplication.instance()
|
|
307
|
+
if not app:app = QApplication(sys.argv)
|
|
308
|
+
app.setStyle('Fusion')
|
|
309
|
+
object = Process_Tab_CalVi(None)
|
|
310
|
+
object.show()
|
|
311
|
+
app.exec()
|
|
312
|
+
app.quit()
|
|
313
|
+
app=None
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
from .ui_Process_Tab_Disp import*
|
|
2
|
+
from .TabTools import*
|
|
3
|
+
from .Process_Tab import Process_Tab
|
|
4
|
+
|
|
5
|
+
spin_tips={
|
|
6
|
+
'Nit' : 'Number of iterations',
|
|
7
|
+
'order' : 'Kernel width for image interpolation',
|
|
8
|
+
'SemiWidth_Epipolar' : 'Semi-width normal to epipolar line',
|
|
9
|
+
'Filter_SemiWidth' : 'Semi-width of filter',
|
|
10
|
+
'Threshold' : 'Threshold for disparity computation',
|
|
11
|
+
'Nit_OutDet' : 'Number of iterations for outlier detection',
|
|
12
|
+
'Std_Threshold' : 'S.t.d. threshold for disparity validation',
|
|
13
|
+
}
|
|
14
|
+
check_tips={}
|
|
15
|
+
radio_tips={}
|
|
16
|
+
line_edit_tips={
|
|
17
|
+
'IW' : 'IW sizes and/or spacings',
|
|
18
|
+
}
|
|
19
|
+
button_tips={
|
|
20
|
+
'tool_CollapBox_FinIt' : 'Graphics',
|
|
21
|
+
'CollapBox_FinIt' : 'Graphics',
|
|
22
|
+
'tool_CollapBox_Interp' : 'Graphics',
|
|
23
|
+
'CollapBox_Interp' : 'Graphics',
|
|
24
|
+
'tool_CollapBox_Interp_2' : 'Graphics',
|
|
25
|
+
'CollapBox_Interp_2' : 'Graphics',
|
|
26
|
+
}
|
|
27
|
+
combo_tips={
|
|
28
|
+
'ImInt' : 'Image interpolation',
|
|
29
|
+
'par_pol' : 'Polynomial interpolation',
|
|
30
|
+
'par_imshift' : 'Moving window',
|
|
31
|
+
'frames' : 'Use frame 1/2',
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
class PROpar_Disp(TABpar):
|
|
35
|
+
def __init__(self,Process=ProcessTypes.null,Step=StepTypes.null):
|
|
36
|
+
self.setup(Process,Step)
|
|
37
|
+
super().__init__('PROpar_Disp','PROCESS_Tab_Disp')
|
|
38
|
+
self.unchecked_fields+=[]
|
|
39
|
+
|
|
40
|
+
def setup(self,Process,Step):
|
|
41
|
+
self.Process = Process
|
|
42
|
+
self.Step = Step
|
|
43
|
+
|
|
44
|
+
self.Nit = 5
|
|
45
|
+
self.frames = 1
|
|
46
|
+
self.IntIniz = 57
|
|
47
|
+
self.IntIniz_ind_list = [3,1,2]
|
|
48
|
+
self.Vect =[256,128,256,128]
|
|
49
|
+
|
|
50
|
+
self.SemiWidth_Epipolar = 40
|
|
51
|
+
self.Filter_SemiWidth = 10
|
|
52
|
+
self.Threshold = 0.5
|
|
53
|
+
|
|
54
|
+
self.Nit_OutDet = 5
|
|
55
|
+
self.Std_Threshold = 3.0
|
|
56
|
+
|
|
57
|
+
class Process_Tab_Disp(gPaIRS_Tab):
|
|
58
|
+
class Process_Tab_Signals(gPaIRS_Tab.Tab_Signals):
|
|
59
|
+
pass
|
|
60
|
+
|
|
61
|
+
def __init__(self,parent: QWidget =None, flagInit= __name__ == "__main__"):
|
|
62
|
+
pri.Time.yellow('Process Disp: init')
|
|
63
|
+
super().__init__(parent,Ui_ProcessTab_Disp,PROpar_Disp)
|
|
64
|
+
self.signals=self.Process_Tab_Signals(self)
|
|
65
|
+
pri.Time.yellow('Process Disp: ui')
|
|
66
|
+
|
|
67
|
+
#------------------------------------- Graphical interface: widgets
|
|
68
|
+
self.TABname='Process_Disp'
|
|
69
|
+
self.ui: Ui_ProcessTab_Disp
|
|
70
|
+
|
|
71
|
+
#necessary to change the name and the order of the items
|
|
72
|
+
for g in list(globals()):
|
|
73
|
+
if '_items' in g or '_ord' in g or '_tips' in g:
|
|
74
|
+
#pri.Info.blue(f'Adding {g} to {self.name_tab}')
|
|
75
|
+
setattr(self,g,eval(g))
|
|
76
|
+
|
|
77
|
+
pri.Time.yellow('Process Disp: globals')
|
|
78
|
+
|
|
79
|
+
if __name__ == "__main__":
|
|
80
|
+
self.app=app
|
|
81
|
+
setAppGuiPalette(self)
|
|
82
|
+
|
|
83
|
+
pri.Time.yellow('Process Disp: setupWid')
|
|
84
|
+
|
|
85
|
+
#------------------------------------- Declaration of parameters
|
|
86
|
+
self.PROpar_base=PROpar_Disp()
|
|
87
|
+
self.PROpar:PROpar_Disp=self.TABpar
|
|
88
|
+
self.PROpar_old:PROpar_Disp=self.TABpar_old
|
|
89
|
+
|
|
90
|
+
pri.Time.yellow('Process Disp: par')
|
|
91
|
+
|
|
92
|
+
#------------------------------------- Callbacks
|
|
93
|
+
self.defineWidgets()
|
|
94
|
+
self.setupWid() #---------------- IMPORTANT
|
|
95
|
+
|
|
96
|
+
Process_Tab.defineInterpActions(self)
|
|
97
|
+
self.defineCallbacks()
|
|
98
|
+
self.connectCallbacks()
|
|
99
|
+
|
|
100
|
+
Process_Tab.defineInterpSet(self)
|
|
101
|
+
self.defineSettings()
|
|
102
|
+
|
|
103
|
+
self.adjustTABpar=self.adjustPROpar
|
|
104
|
+
self.setTABlayout=self.setPROlayout
|
|
105
|
+
|
|
106
|
+
pri.Time.yellow('Process Disp: define callbacks')
|
|
107
|
+
|
|
108
|
+
#------------------------------------- Initializing
|
|
109
|
+
if flagInit:
|
|
110
|
+
self.initialize()
|
|
111
|
+
|
|
112
|
+
def initialize(self):
|
|
113
|
+
pri.Info.yellow(f'{"*"*20} PROCESS Disp initialization {"*"*20}')
|
|
114
|
+
self.setTABpar(FlagAdjustPar=True,FlagBridge=False)
|
|
115
|
+
self.add_TABpar('initialization')
|
|
116
|
+
self.setFocus()
|
|
117
|
+
|
|
118
|
+
#*************************************************** Adjusting parameters
|
|
119
|
+
def adjustPROpar(self):
|
|
120
|
+
minIWSize=min([self.PROpar.Vect[0],self.PROpar.Vect[2]])
|
|
121
|
+
self.PROpar.SemiWidth_Epipolar=min([self.PROpar.SemiWidth_Epipolar, int(minIWSize/4)])
|
|
122
|
+
self.PROpar.Filter_SemiWidth=min([self.PROpar.Filter_SemiWidth, int(minIWSize/4)])
|
|
123
|
+
self.ui.spin_SemiWidth_Epipolar.setMaximum(int(minIWSize/4))
|
|
124
|
+
self.ui.spin_Filter_SemiWidth.setMaximum(int(minIWSize/4))
|
|
125
|
+
return
|
|
126
|
+
|
|
127
|
+
#*************************************************** Layout
|
|
128
|
+
def setPROlayout(self):
|
|
129
|
+
self.ui.w_Std_Threshold.setVisible(self.PROpar.Nit_OutDet>0)
|
|
130
|
+
return
|
|
131
|
+
|
|
132
|
+
#*************************************************** Windowing and Correlation
|
|
133
|
+
#******************** Actions
|
|
134
|
+
def line_edit_IW_action(self):
|
|
135
|
+
text=self.ui.line_edit_IW.text()
|
|
136
|
+
split_text=re.split(r'(\d+)', text)[1:-1:2]
|
|
137
|
+
if len(split_text)==0:
|
|
138
|
+
message="Please insert at least one value!"
|
|
139
|
+
show_mouse_tooltip(self,message)
|
|
140
|
+
self.line_edit_IW_set()
|
|
141
|
+
return
|
|
142
|
+
split_num=[int(t) for t in split_text]
|
|
143
|
+
if len(split_num)<4: split_num+=[split_num[-1]]*(4-len(split_num))
|
|
144
|
+
vect=[int(split_num[i]) for i in (0,2,1,3)]
|
|
145
|
+
FlagValid=len(vect)==4 and all([v>0 for v in vect])
|
|
146
|
+
if FlagValid:
|
|
147
|
+
self.PROpar.Vect=vect
|
|
148
|
+
message=""
|
|
149
|
+
else:
|
|
150
|
+
message='IW sizes or spacings were assigned inconsistently! Please, retry!'
|
|
151
|
+
show_mouse_tooltip(self,message)
|
|
152
|
+
self.line_edit_IW_set()
|
|
153
|
+
return
|
|
154
|
+
|
|
155
|
+
#******************** Settings
|
|
156
|
+
def line_edit_IW_set(self):
|
|
157
|
+
vect=[f'{self.PROpar.Vect[i]}' for i in (0,2,1,3)]
|
|
158
|
+
vectStr=', '.join(vect)
|
|
159
|
+
self.ui.line_edit_IW.setText(vectStr)
|
|
160
|
+
|
|
161
|
+
if __name__ == "__main__":
|
|
162
|
+
import sys
|
|
163
|
+
app=QApplication.instance()
|
|
164
|
+
if not app:app = QApplication(sys.argv)
|
|
165
|
+
app.setStyle('Fusion')
|
|
166
|
+
object = Process_Tab_Disp(None)
|
|
167
|
+
object.show()
|
|
168
|
+
app.exec()
|
|
169
|
+
app.quit()
|
|
170
|
+
app=None
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
from .ui_Process_Tab_Min import*
|
|
2
|
+
from .TabTools import*
|
|
3
|
+
|
|
4
|
+
LaserTypeSearch_items=[ 'single laser', #0
|
|
5
|
+
'double laser', #1
|
|
6
|
+
]
|
|
7
|
+
LaserTypeSearch_order=[i for i in range(len(LaserTypeSearch_items))] #************ change here, please!
|
|
8
|
+
|
|
9
|
+
spin_tips={
|
|
10
|
+
'SogliaNoise' : 'Minimum allowed value for validation',
|
|
11
|
+
'SogliaStd' : 'Minimum allowed st.d. value for validation',
|
|
12
|
+
}
|
|
13
|
+
check_tips={}
|
|
14
|
+
radio_tips={
|
|
15
|
+
'TR': 'Time-resolved sequence',
|
|
16
|
+
}
|
|
17
|
+
line_edit_tips={}
|
|
18
|
+
button_tips={}
|
|
19
|
+
combo_tips={
|
|
20
|
+
'LaserType': 'Laser setup',
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
class PROpar_Min(TABpar):
|
|
24
|
+
def __init__(self,Process=ProcessTypes.null,Step=StepTypes.null):
|
|
25
|
+
self.setup(Process,Step)
|
|
26
|
+
super().__init__('PROpar_Min','Process_Min')
|
|
27
|
+
self.unchecked_fields+=[]
|
|
28
|
+
|
|
29
|
+
def setup(self,Process,Step):
|
|
30
|
+
self.Process = Process
|
|
31
|
+
self.Step = Step
|
|
32
|
+
|
|
33
|
+
self.FlagTR = False
|
|
34
|
+
self.LaserType = 0 #0 single, 1 double
|
|
35
|
+
self.SogliaNoise = 5.0
|
|
36
|
+
self.SogliaStd = 1.5
|
|
37
|
+
|
|
38
|
+
class Process_Tab_Min(gPaIRS_Tab):
|
|
39
|
+
class Process_Tab_Signals(gPaIRS_Tab.Tab_Signals):
|
|
40
|
+
pass
|
|
41
|
+
|
|
42
|
+
def __init__(self,parent: QWidget =None, flagInit= __name__ == "__main__"):
|
|
43
|
+
super().__init__(parent,Ui_ProcessTab_Min,PROpar_Min)
|
|
44
|
+
self.signals=self.Process_Tab_Signals(self)
|
|
45
|
+
|
|
46
|
+
#------------------------------------- Graphical interface: widgets
|
|
47
|
+
self.TABname='Process_Min'
|
|
48
|
+
self.ui: Ui_ProcessTab_Min
|
|
49
|
+
|
|
50
|
+
#necessary to change the name and the order of the items
|
|
51
|
+
for g in list(globals()):
|
|
52
|
+
if '_items' in g or '_ord' in g or '_tips' in g:
|
|
53
|
+
#pri.Info.blue(f'Adding {g} to {self.name_tab}')
|
|
54
|
+
setattr(self,g,eval(g))
|
|
55
|
+
|
|
56
|
+
if __name__ == "__main__":
|
|
57
|
+
self.app=app
|
|
58
|
+
setAppGuiPalette(self)
|
|
59
|
+
|
|
60
|
+
self.pixmap_laser_NTR=QPixmap(icons_path+'laser_NTR.png')
|
|
61
|
+
self.pixmap_laser_TR_single=QPixmap(icons_path+'laser_TR_single.png')
|
|
62
|
+
self.pixmap_laser_TR_double=QPixmap(icons_path+'laser_TR_double.png')
|
|
63
|
+
|
|
64
|
+
#------------------------------------- Declaration of parameters
|
|
65
|
+
self.PROpar_base=PROpar_Min()
|
|
66
|
+
self.PROpar:PROpar_Min=self.TABpar
|
|
67
|
+
self.PROpar_old:PROpar_Min=self.TABpar_old
|
|
68
|
+
|
|
69
|
+
#------------------------------------- Callbacks
|
|
70
|
+
self.defineWidgets()
|
|
71
|
+
self.setupWid() #---------------- IMPORTANT
|
|
72
|
+
|
|
73
|
+
self.defineCallbacks()
|
|
74
|
+
self.connectCallbacks()
|
|
75
|
+
|
|
76
|
+
self.defineSettings()
|
|
77
|
+
|
|
78
|
+
self.adjustTABpar=self.adjustPROpar
|
|
79
|
+
self.setTABlayout=self.setPROlayout
|
|
80
|
+
|
|
81
|
+
#------------------------------------- Initializing
|
|
82
|
+
if flagInit:
|
|
83
|
+
self.initialize()
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def initialize(self):
|
|
87
|
+
pri.Info.yellow(f'{"*"*20} PROCESS Min initialization {"*"*20}')
|
|
88
|
+
self.setTABpar(FlagAdjustPar=True,FlagBridge=False)
|
|
89
|
+
self.add_TABpar('initialization')
|
|
90
|
+
self.setFocus()
|
|
91
|
+
|
|
92
|
+
#*************************************************** Adjusting parameters
|
|
93
|
+
def adjustPROpar(self):
|
|
94
|
+
if not self.PROpar.FlagTR: self.PROpar.LaserType=1
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
#*************************************************** Layout
|
|
98
|
+
def setPROlayout(self):
|
|
99
|
+
#pri.Time.blue(1,'setPROpar: Beginning')
|
|
100
|
+
self.ui.w_LaserType.setEnabled(self.PROpar.FlagTR)
|
|
101
|
+
|
|
102
|
+
if not self.PROpar.FlagTR:
|
|
103
|
+
self.ui.example_label.setPixmap(self.pixmap_laser_NTR)
|
|
104
|
+
else:
|
|
105
|
+
if self.PROpar.LaserType==0:
|
|
106
|
+
self.ui.example_label.setPixmap(self.pixmap_laser_TR_single)
|
|
107
|
+
elif self.PROpar.LaserType==1:
|
|
108
|
+
self.ui.example_label.setPixmap(self.pixmap_laser_TR_double)
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
if __name__ == "__main__":
|
|
112
|
+
import sys
|
|
113
|
+
app=QApplication.instance()
|
|
114
|
+
if not app:app = QApplication(sys.argv)
|
|
115
|
+
app.setStyle('Fusion')
|
|
116
|
+
object = Process_Tab_Min(None)
|
|
117
|
+
object.show()
|
|
118
|
+
app.exec()
|
|
119
|
+
app.quit()
|
|
120
|
+
app=None
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
from .addwidgets_ps import*
|
|
2
|
+
from .ui_ResizePopup import*
|
|
3
|
+
from .TabTools import*
|
|
4
|
+
|
|
5
|
+
class ResizePopup(QWidget):
|
|
6
|
+
FlagTransparentBack=0 #tra 0 e 1
|
|
7
|
+
|
|
8
|
+
def __init__(self,callbacks=[]):
|
|
9
|
+
super().__init__()
|
|
10
|
+
ui=Ui_ResizePopup()
|
|
11
|
+
ui.setupUi(self)
|
|
12
|
+
self.ui=ui
|
|
13
|
+
setupWid(self)
|
|
14
|
+
|
|
15
|
+
self.setFixedSize(self.width(),self.height())
|
|
16
|
+
self.setWindowFlags(Qt.Window|Qt.FramelessWindowHint|Qt.WindowStaysOnTopHint| Qt.Popup)
|
|
17
|
+
self.setAttribute(Qt.WA_NoSystemBackground)
|
|
18
|
+
self.setAttribute(Qt.WA_TranslucentBackground)
|
|
19
|
+
|
|
20
|
+
def createCallb(k,flag):
|
|
21
|
+
if flag:
|
|
22
|
+
def Callb():
|
|
23
|
+
callbacks[k]()
|
|
24
|
+
self.hide()
|
|
25
|
+
else:
|
|
26
|
+
def Callb():
|
|
27
|
+
self.hide()
|
|
28
|
+
return Callb
|
|
29
|
+
for k in range(6):
|
|
30
|
+
b:QToolButton=getattr(self.ui,f'b{k}')
|
|
31
|
+
flag=k<=len(callbacks)-1
|
|
32
|
+
b.clicked.connect(createCallb(k,flag))
|
|
33
|
+
|
|
34
|
+
self.ui.button_close_tab.clicked.connect(self.hide)
|
|
35
|
+
self.setWidgetColor()
|
|
36
|
+
|
|
37
|
+
def setWidgetColor(self):
|
|
38
|
+
widget=self.ui.w_b_size
|
|
39
|
+
color = widget.palette().color(QtGui.QPalette.Window)
|
|
40
|
+
alpha=255-self.FlagTransparentBack*255
|
|
41
|
+
col=f"rgba({color.red()}, {color.green()}, {color.blue()}, {alpha})"
|
|
42
|
+
backc="background:"+col
|
|
43
|
+
ss=f"QWidget#{widget.objectName()}"+"{border: 1px solid gray;border-radius: 15px;"+backc+"}"
|
|
44
|
+
widget.setStyleSheet(ss)
|
|
45
|
+
|
|
46
|
+
if __name__ == "__main__":
|
|
47
|
+
import sys
|
|
48
|
+
app=QApplication.instance()
|
|
49
|
+
if not app: app = QApplication(sys.argv)
|
|
50
|
+
app.setStyle('Fusion')
|
|
51
|
+
object = ResizePopup()
|
|
52
|
+
object.exec()
|
|
53
|
+
#app.exec()
|
|
54
|
+
app.quit()
|
|
55
|
+
app=None
|