{"id":20399973,"url":"https://github.com/kitware/keypointgui","last_synced_at":"2025-07-07T08:37:31.491Z","repository":{"id":47032489,"uuid":"206614455","full_name":"Kitware/keypointgui","owner":"Kitware","description":"Provides a wxPython GUI to select image-point correspondences between images and fits a homography.","archived":false,"fork":false,"pushed_at":"2021-09-16T13:36:13.000Z","size":1989,"stargazers_count":12,"open_issues_count":2,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-26T08:23:21.517Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Kitware.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-09-05T16:54:59.000Z","updated_at":"2023-12-27T17:14:07.000Z","dependencies_parsed_at":"2022-09-04T22:32:04.828Z","dependency_job_id":null,"html_url":"https://github.com/Kitware/keypointgui","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kitware%2Fkeypointgui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kitware%2Fkeypointgui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kitware%2Fkeypointgui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kitware%2Fkeypointgui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kitware","download_url":"https://codeload.github.com/Kitware/keypointgui/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248575559,"owners_count":21127205,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-15T04:35:37.858Z","updated_at":"2025-04-12T13:50:48.735Z","avatar_url":"https://github.com/Kitware.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"############################################\n                 Keypoint GUI\n############################################\n.. image:: /docs/gui_demo_657x508.jpg\n   :alt: gui_demo\n\nIntroduction\n============\nThis project provides a GUI to select pairs of points between two images (see \n`image correspondence \u003chttps://en.wikipedia.org/wiki/Correspondence_problem\u003e`_),\nwhich can be saved or used to fit a homography. The GUI functionality is\nimplemented with wxPython 4.X with opencv-python image processing. Though, the \ntag `wxPython3X` provides compatibility with wxPython 3.X.\n\nProject Layout\n==============\nThe \"source\" code resides under the `keypointgui directory`:\n\n- `gui.py` - the implementation of the GUI, which calls upon the layout defined in`form_builder_output.py`. This is the main \"executable\".\n\n- `gui.fbp` - wxFormBuilder format file (`necessary version to edit GUI \u003chttps://ci.appveyor.com/api/projects/jhasse/wxformbuilder-461d5/artifacts/wxFormBuilder_win32.zip?branch=master\u003e`_ or newer `repository here \u003cwww.wxformbuilder.org\u003e`_).\n\n- `form_builder_output.py` - automatically generated from `gui.fbp` using wxFormBuilder.\n\n- `/tests/demo.py` - GUI demo.\n\nInstallation\n============\n1. Make sure Python is installed and visible from a command terminal:\n\n.. code-block :: console\n\n  $ python -V\n\n2. Clone this repository into the desired directory:\n\n.. code-block :: console\n\n  $ git clone git@kwgitlab.kitware.com:matt.brown/keypointgui.git\n  $ cd keypointgui\n\n3. If wxPython 3.X is already on the system and you do not want to upgrade to 4.x:\n\n.. code-block :: console\n\n  # Check if wxPython 3.X is already installed (print version)\n  $ python -c \"import wx;print wx.__version__\"\n  \n  # If version 3.X is present, checkout the wxPython3X branch:\n  $ git checkout wxPython3X\n \n4. If using Ubuntu 16.04 (otherwise pip will try to build from source and fail):\n\n.. code-block :: console\n  \n  $ sudo pip install -U -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-16.04 wxPython\n\n5. Install with all dependencies (OpenCV and wxPython):\n\n.. code-block :: console\n\n  $ pip install .\n\nThis package can be uninstalled by:\n\n.. code-block :: console\n\n  $ pip uninstall keypointgui\n\nUsage Instructions\n==================\n\nYou can launch the GUI with:\n\n.. code-block :: console\n\n  $ python -m keypointgui.gui\n\nThe GUI is initially empty, but you can load your images using the menu options:\n\n  File -\u003e Load Left Image\n\n  File -\u003e Load Right Image\n\nThe top two panes are global views of the loaded images, and the red rectangles\nindicate the regions shown magnified in the associated bottom panes. Clicking in\neither top pane (or right clicking in the bottom pane) will recenter the zoomed\nregion, and the mousewheel controls the magnification. Left clicking in either\nof the lower images will create a temporary blue point. The same feature should\nbe left clicked in the other lower image, and then both points will turn red,\nestablishing an image point correspondence. This process is repeated to build up\na set of image point correspondences between the two images.\n\nImage Alignment\n---------------\n\nIf the two source images differ in scale or orientation, the task of selecting\npoints can be challenging. After at least four pairs of points have been\nselected, an alignment homography can be fitted to the points using the\n`Left--\u003eRight` or `Right--\u003eLeft` buttons. To get an accurate alignment, these\ninitial four points should be selected from the four corners of the image or\nspread out as much as possible. In the aligned state, point selection can\nproceed in the same manner as previously detailed, and the selected points are\nautomatically transformed back to the full-resolution, source-image coordinate\nsystem when saving points or generating a homography.\n\nIn the aligned state, the `Sync Zooms` options defaults to checked. With this\nfeature enabled, clicking on either top panel will recenter the zoom regions for\nboth images onto roughly the same feature.\n\nSaving Points\n-------------\n\nThe menu option:\n\n  File -\u003e Save Points\n\nwill save a text file of the currently selected points. In this file, each row\nrepresents one pair of points, with the first two columns representing the (x,y)\ncoordinates of the point in the left image and the last two columns representing\nthe (x,y) coordinates of the point in the right image. The convention for image\ncoordinates is such that the center of the top left pixel has coordinates (0,0).\n\nSaving Homography\n-----------------\n\nThe menu options:\n\n  File -\u003e Save Left-\u003eRight Homography\n\n  File -\u003e Save Right-\u003eLeft Homography\n\nsaves a homography to a text file that warps coordinates from the left image\ninto the right image or the right image into the left image, respectively.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkitware%2Fkeypointgui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkitware%2Fkeypointgui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkitware%2Fkeypointgui/lists"}