{"id":20399880,"url":"https://github.com/kitware/kwiver","last_synced_at":"2025-05-15T11:08:48.812Z","repository":{"id":19962987,"uuid":"23229909","full_name":"Kitware/kwiver","owner":"Kitware","description":"Pulls Together Computer Vision Algorithms into Highly-Modular Run-Time Configurable Systems","archived":false,"fork":false,"pushed_at":"2025-05-14T21:08:45.000Z","size":64314,"stargazers_count":191,"open_issues_count":118,"forks_count":83,"subscribers_count":23,"default_branch":"master","last_synced_at":"2025-05-14T22:22:21.297Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","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":"CONTRIBUTING.rst","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2014-08-22T15:22:20.000Z","updated_at":"2025-04-25T22:26:56.000Z","dependencies_parsed_at":"2023-02-18T11:48:41.609Z","dependency_job_id":"354441f0-632b-4d41-92c3-5076d2e1d406","html_url":"https://github.com/Kitware/kwiver","commit_stats":{"total_commits":9317,"total_committers":68,"mean_commits":"137.01470588235293","dds":0.7092411720510894,"last_synced_commit":"02397a25122500dfb8d1b597f00ff7d30f14783c"},"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kitware%2Fkwiver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kitware%2Fkwiver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kitware%2Fkwiver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kitware%2Fkwiver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kitware","download_url":"https://codeload.github.com/Kitware/kwiver/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254328385,"owners_count":22052632,"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:34:47.579Z","updated_at":"2025-05-15T11:08:48.793Z","avatar_url":"https://github.com/Kitware.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":".. image:: doc/kwiver_Logo-300x78.png\n   :alt: KWIVER\n\n|master|   |release|   |version|   |docker|\n\n.. |master| image:: https://img.shields.io/travis/Kitware/kwiver/master?label=master\n.. |release| image:: https://img.shields.io/travis/Kitware/kwiver/release?label=release\n.. |version| image:: https://img.shields.io/github/release/kitware/kwiver\n.. |docker| image:: https://img.shields.io/docker/pulls/kitware/kwiver\n\nKitware Image and Video Exploitation and Retrieval\n==================================================\n\nThe KWIVER toolkit is a collection of software tools designed to\ntackle challenging image and video analysis problems and other related\nchallenges. Recently started by Kitware’s Computer Vision and\nScientific Visualization teams, KWIVER is an ongoing effort to\ntransition technology developed over multiple years to the open source\ndomain to further research, collaboration, and product development.\nKWIVER is a collection of C++ libraries with C and Python bindings\nand uses an permissive `BSD License \u003cLICENSE\u003e`_.\n\nOne of the primary design goals of KWIVER is to make it easier to pull\ntogether algorithms from a wide variety of third-party, open source\nimage and video processing projects and integrate them into highly\nmodular, run-time configurable systems.\n\nFor more information on how KWIVER achieves this goal,\nand how to use KWIVER visit our `documentation site \u003chttp://kwiver.readthedocs.io/en/latest/\u003e`_.\n\nDirectory Structure and Provided Functionality\n==============================================\n\nBelow is a summary of the key directories in KWIVER and a brief summary of\nthe content they contain.\n\n\n================ ===========================================================\n`\u003cCMake\u003e`_       CMake helper scripts\n`\u003carrows\u003e`_      The algorithm plugin modules\n`\u003cdoc\u003e`_         Documentation, manuals, release notes\n`\u003cexamples\u003e`_    Examples for running KWIVER (currently out of date)\n`\u003cextras\u003e`_      Extra utilities (e.g. instrumentation)\n`\u003csprokit\u003e`_     Stream processing toolkit\n`\u003ctests\u003e`_       Testing related support code\n`\u003cvital\u003e`_       Core libraries source and headers\n================ ===========================================================\n\nKWIVER Docker Image\n=============================\n\nKitware maintains a `Docker \u003chttps://www.docker.com/\u003e`_ image with KWIVER prebuilt.\nThe Dockerfile used to build the image can be found `here \u003cdockerfile\u003e`_.\n\nPull the image from Dockerhub::\n\n \"docker pull kitware/kwiver:latest\" (latest master)\n\n \"docker pull kitware/kwiver:release\" (latest release)\n\n \"docker pull kitware/kwiver:1.6.0\" (static release)\n\n(`https://hub.docker.com/r/kitware/kwiver \u003chttps://hub.docker.com/r/kitware/kwiver\u003e`_)\n\nor build the KWIVER image using the dockerfile::\n\n \"docker build -t kwiver:tagname .\"\n\nBuilding KWIVER\n===============\n\nFletch\n------\n\nKWIVER, especially Arrows, has a number of dependencies on 3rd party\nopen source libraries.  Most of these dependencies are optional\nbut useful in practice, and the number of dependencies is expected to\ngrow as we expand Arrows.\n\nVital has minimal required dependencies (only Eigen_).\nSprokit additionally relies on Boost_.\nC++ tests additionally rely on `Google Test`_.\nArrows and Sprokit processes are structured so that\nthe code that depends on an external package is in a directory with\nthe major dependency name (e.g. vxl, ocv). The dependencies can be\nturned ON or OFF through CMake variables.\n\nTo make it easier to build KWIVER, especially\non systems like Microsoft Windows that do not have package manager,\nFletch_ was developed to gather, configure and build dependent packages\nfor use with KWIVER.  Fletch is a |cmake_link|_ based\n\"super-build\" that takes care of most of the build details for you.\n\nFor building Fletch_, refer to the README file in that repository.\n\n\nRunning CMake\n-------------\n\nYou may run CMake directly from a shell or cmd window.\nOn unix systems, the ccmake tool allows for interactive selection of CMake options.\nAvailable for all platforms, the CMake GUI can set the source and build directories, options,\n\"Configure\" and \"Generate\" the build files all with the click of a few buttons.\n\nWe recommend building KWIVER out of the source directory to prevent mixing\nsource files with compiled products.  Create a build directory in parallel\nwith the KWIVER source directory for each desired configuration. For example:\n\n========================== ===================================================================\n``\\kwiver\\src``             contains the code from the git repository\n``\\kwiver\\build\\release``   contains the built files for the release configuration\n``\\kwiver\\build\\debug``     contains the built files for the debug configuration\n========================== ===================================================================\n\nThe following are the most important CMake configuration options for KWIVER:\n\n============================= ====================================================================\n``CMAKE_BUILD_TYPE``          The compiler mode, usually Debug or Release\n``CMAKE_INSTALL_PREFIX``      The path to where you want the kwiver build products to install\n``KWIVER_ENABLE_ARROWS``      Enable algorithm implementation plugins\n``KWIVER_ENABLE_C_BINDINGS``  Whether to build the Vital C bindings\n``KWIVER_ENABLE_DOCS``        Turn on building the Doxygen documentation\n``KWIVER_ENABLE_LOG4CPLUS``   Enable log4cplus logger back end\n``KWIVER_ENABLE_PYTHON``      Enable the Vital Python bindings (requires KWIVER_ENABLE_C_BINDINGS)\n``KWIVER_ENABLE_SPROKIT``     Enable the Stream Processing Toolkit\n``KWIVER_ENABLE_TESTS``       Build the unit tests (requires Google Test)\n``KWIVER_ENABLE_TOOLS``       Build the command line tools (e.g. plugin_explorer)\n``fletch_DIR``                Install directory of a Fletch build.\n============================= ====================================================================\n\nThere are many more options.  Specifically, there are numerous options\nfor third-party projects prefixed with ``KWIVER_ENABLE_`` that enable\nbuilding the Arrows plugins that depend on those projects.  When building\nwith the support of Fletch_ (set ``fletch_DIR``) the enable options for\npackages built by Fletch should be turned on by default.\nThe fletch_DIR is the fletch build directory root, which contains the fletchConfig.cmake file.\n\nThe following sections will walk you through the basic options for a minimal KWIVER build.\n\nBasic CMake generation via command line\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nNote, This assumes your fletch was built with python support (Turn OFF if not).\n\nYou will also need to replace the fletch path with your own::\n\n    $ cmake \u003c/path/to/kwiver/source\u003e -DCMAKE_BUILD_TYPE=Release \\\n            -Dfletch_DIR:PATH=\u003cpath/to/fletch/build/dir\u003e \\\n            -DKWIVER_ENABLE_ARROWS:BOOL=ON -DKWIVER_ENABLE_C_BINDINGS:BOOL=ON \\\n            -DKWIVER_ENABLE_EXTRAS:BOOL=ON -DKWIVER_ENABLE_LOG4CPLUS:BOOL=ON \\\n            -DKWIVER_ENABLE_PROCESSES:BOOL=ON -DKWIVER_ENABLE_PYTHON:BOOL=ON \\\n            -DKWIVER_ENABLE_SPROKIT:BOOL=ON -DKWIVER_ENABLE_TOOLS:BOOL=ON \\\n            -DKWIVER_ENABLE_EXAMPLES:BOOL=ON -DKWIVER_USE_BUILD_TREE:BOOL=ON\n\nBasic CMake generation using ccmake\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nWhen first configuring a KWIVER build with ccmake it is preferable to set the build\nconfiguration and ``fletch_DIR`` on the command line like this::\n\n  $ ccmake /path/to/kwiver/source -DCMAKE_BUILD_TYPE=Release -Dfletch_DIR=/path/to/fletch/install\n\nOther CMake options can also be passed on the command line in this way if desired.\nFollow the recommended options setup using the CMake GUI.\n\nBasic CMake generation using the CMake GUI\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nWhen running the cmake gui, we recommend selecting the 'Grouped' and 'Advanced'\noptions to better organize the options available. Note, after clicking the\nconfiguration button, new options will be highlighted in the red sections.\n\n1. Once the source code and build directories are set, press the 'Configuration'\n   button and select your compiler\n\n   a. Configuration will fail, but now we can set option values\n\n2. Set the fletch_DIR, the CMAKE_BUILD_TYPE, and these KWIVER options,\n   and press the 'Configuration' button\n\n   a. Note, if compiling with MSVC, you will not have a CMAKE_BUILD_TYPE option\n\n.. image:: doc/manuals/_images/cmake/cmake_step_2.png\n   :alt: KWIVER CMake Configuration Step 2\n\n3. Select these new options, and click 'Generate'\n\n   a. This assumes your fletch was built with python support.\n      If not, do not check this option\n\n.. image:: doc/manuals/_images/cmake/cmake_step_3.png\n   :alt: KWIVER CMake Configuration Step 3\n\nCompiling\n---------\n\nOnce your CMake generation has completed and created the build files,\ncompile in the standard way for your build environment.  On Linux\nthis is typically running ``make``.\n\nThere is also a build target, INSTALL. This target will build all code,\nthen create an install directory inside the build directory.  This install\nfolder will be populated with all binaries, libraries, headers, and other files\nyou will need to develop your application with KWIVER. MSVC users, note that\nthis install directory is for a single build configuration; there will not be\nconfiguration named directories in this directory structure\n(i.e. no ``/bin/release``, only ``/bin``).\n\n.. note::\n\n  If you are on Windows and enable tests (``KWIVER_ENABLE_TESTS=ON``),\n  and are building shared libraries (``BUILD_SHARED_LIBS=ON``), you will\n  need to add the path to ``gtest.dll`` to the ``PATH`` in your environment\n  in order to build and run the tests.\n\n  The easiest way to achieve this is to use the ``setup_KWIVER.bat`` script\n  (described in the next session), and to run builds and/or launch Visual\n  Studio from a command prompt which has been so configured.\n\n\nRunning KWIVER\n==============\n\nOnce you've built KWIVER, you'll want to test that it's working on your system.\nChange your terminal/command prompt to the KWIVER CMake build directory.\nFrom a command prompt execute the following command::\n\n  # via a bash shell\n  $ cd \u003cpath/to/kwiver/build\u003e\n  $ source setup_KWIVER.sh\n  #\n  # via a windows cmd prompt\n  \u003e cd \u003cpath/to/kwiver/build\u003e\n  \u003e setup_KWIVER.bat\n\nThis will set up your PATH, PYTHONPATH and other environment variables\nto allow KWIVER to work conveniently within in the shell/cmd window.\n\nYou can run this simple pipeline to ensure your system is configured properly::\n\n  # via a bash shell\n  $ cd bin\n  $ kwiver runner ../examples/pipelines/number_flow.pipe\n  #\n  # on windows, you will need to also be in the configuration folder\n  \u003e cd bin\\release\n  \u003e kwiver runner ..\\..\\examples\\pipelines\\number_flow.pipe\n\nThis will generate a 'numbers.txt' file in the \u003c/path/to/kwiver/build\u003e/examples/pipelines/output directory.\n\nMore examples can be found in our `tutorials \u003chttp://kwiver.readthedocs.io/en/latest/tutorials.html\u003e`_.\n\nKWIVER Users\n============\n\nHere are some applications using KWIVER that serve as an example of how to\nleverage KWIVER for a specific application:\n\n========== ================================================================\nMAP-Tk_    A collection of tools for structure-from-motion and dense 3D\n           reconstruction from imagery with an emphasis on aerial video.\n           The primary component is a GUI application named TeleSculptor.\nVIAME_     A computer vision library designed to integrate several image and\n           video processing algorithms together in a common distributed\n           processing framework, majorly targeting marine species analytics.\n========== ================================================================\n\nTesting\n========\nContinuous integration testing is provided by CDash_.\nOur `KWIVER dashboard \u003chttps://open.cdash.org/index.php?project=KWIVER\u003e`_\nhosts nightly build and test results across multiple platforms including\nWindows, Mac, and Linux.\n\nAnyone can contribute a build to this dashboard using the\n`dashboard script \u003cCMake/dashboard-scripts/KWIVER_common.cmake\u003e`_\nprovided.  Follow the instructions in the comments.\n\n\nContributing\n============\n\nFor details on how to contribute to KWIVER, including code style and branch\nnaming conventions, please read `\u003cCONTRIBUTING.rst\u003e`_.\n\n\nGetting Help\n============\n\nPlease join the\n`kwiver-users \u003chttp://public.kitware.com/mailman/listinfo/kwiver-users\u003e`_\nmailing list to discuss KWIVER or to ask for help with using KWIVER.\nFor less frequent announcements about KWIVER and projects built on KWIVER,\nplease join the\n`kwiver-announce \u003chttp://public.kitware.com/mailman/listinfo/kwiver-announce\u003e`_\nmailing list.\n\n\nAcknowledgements\n================\n\nThe authors would like to thank AFRL/Sensors Directorate for their support\nof this work via SBIR Contract FA8650-14-C-1820. The portions of this work\nfunded by the above contract are approved for public release via case number\n88ABW-2017-2725.\n\nThe authors would like to thank IARPA for their support of this work via the\nDIVA program.\n\nThe authors would like to thank NOAA for their support of this work via the\nNOAA Fisheries Strategic Initiative on Automated Image Analysis.\n\n\n.. Appendix I: References\n.. ======================\n\n.. _Boost: http://www.boost.org/\n.. _`Ceres Solver`: http://ceres-solver.org/\n.. _CDash: http://www.cdash.org/\n.. _cmake_link: http://www.cmake.org/\n.. _Darknet: https://pjreddie.com/darknet/yolo/\n.. _Eigen: http://eigen.tuxfamily.org/\n.. _Fletch: https://github.com/Kitware/fletch\n.. _Google Test: https://github.com/google/googletest\n.. _Kitware: http://www.kitware.com/\n.. _MAP-Tk: https://github.com/Kitware/maptk\n.. _OpenCV: http://opencv.org/\n.. _PROJ: http://proj.org/\n.. _Travis CI: https://travis-ci.org/\n.. _VIAME: https://github.com/Kitware/VIAME\n.. _Vibrant: https://github.com/Kitware/vibrant\n.. _VXL: https://github.com/vxl/vxl/\n\n.. Appendix II: Text Substitutions\n.. ===============================\n\n.. Use a different target name to avoid conflict with `\u003cCMake\u003e`_ link to the\n   source tree.\n\n.. |cmake_link| replace:: CMake\n\n.. |\u003e=| unicode:: U+02265 .. greater or equal sign\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkitware%2Fkwiver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkitware%2Fkwiver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkitware%2Fkwiver/lists"}