Python和C++工具包,将计算机视觉算法集成到高度模块化、可配置的运行时系统
项目描述
Kitware图像和视频利用与检索
KWIVER工具包是一组软件工具,旨在解决具有挑战性的图像和视频分析问题以及其他相关挑战。由Kitware的计算机视觉和科学可视化团队最近启动,KWIVER是持续努力将多年来开发的技术过渡到开源领域,以进一步研究和合作,以及产品开发。KWIVER是一组带有C和Python绑定的C++库,并使用许可的BSD许可证。
KWIVER 的主要设计目标之一是使从众多第三方、开源的图像和视频处理项目中提取算法变得更加容易,并将它们集成到高度模块化、运行时可配置的系统中。
有关 KWIVER 如何实现这一目标以及如何使用 KWIVER 的更多信息,请访问我们的 文档网站
目录结构和提供的功能
以下是 KWIVER 中关键目录的摘要以及它们包含的内容的简要说明。
CMake 辅助脚本 |
|
算法插件模块 |
|
文档、手册、发布说明 |
|
运行 KWIVER 的示例(目前过时) |
|
额外工具(例如,仪表化工具) |
|
流处理工具包 |
|
与测试相关的支持代码 |
|
核心库源代码和头文件 |
KWIVER Docker 镜像
Kitware 维护了一个包含预构建 KWIVER 的 Docker 镜像。用于构建镜像的 Dockerfile 可以在此找到:此处。
从 Dockerhub 拉取镜像
"docker pull kitware/kwiver:master" (latest master) "docker pull kitware/kwiver:release" (latest release) "docker pull kitware/kwiver:1.4.0" (static release)
(https://hub.docker.com/r/kitware/kwiver)
或使用 dockerfile 构建 KWIVER 镜像
"docker build -t kwiver:tagname ."
构建 KWIVER
Fletch
KWIVER,特别是 Arrows,对第三方开源库有很多依赖。其中大多数依赖项是可选的,但在实践中很有用,随着我们扩展 Arrows,依赖项的数量预计会增加。
Vital 的必需依赖项最少(只有 Eigen)。Sprokit 还依赖于 Boost。C++ 测试还依赖于 Google Test。Arrows 和 Sprokit 流程的结构使得依赖于外部包的代码位于以主要依赖项名称命名的目录中(例如,vxl、ocv)。可以通过 CMake 变量来打开或关闭依赖项。
为了更轻松地构建 KWIVER,特别是在没有包管理器如 Microsoft Windows 这样的系统上,开发了 Fletch 来收集、配置和构建依赖包以供 KWIVER 使用。Fletch 是一个基于 CMake 的“超级构建”,它为您处理了大多数构建细节。
有关构建 Fletch 的信息,请参阅该存储库中的 README 文件。
运行 CMake
您可以直接从 shell 或 cmd 窗口中运行 cmake。在 Unix 系统上,ccmake 工具允许交互式选择 CMake 选项。适用于所有平台的 CMake GUI 可以通过单击几个按钮来设置源和构建目录、选项、“配置”和“生成”构建文件。
我们建议在源目录外构建 KWIVER,以防止源文件与编译产品混合。为每个期望的配置在 KWIVER 源目录并行创建一个构建目录。例如
\kwiver\src |
包含来自 git 存储库的代码 |
\kwiver\build\release |
包含发布配置的构建文件 |
\kwiver\build\debug |
包含调试配置的构建文件 |
以下是最重要的 KWIVER CMake 配置选项。
CMAKE_BUILD_TYPE |
编译器模式,通常是调试或发布 |
CMAKE_INSTALL_PREFIX |
您想要安装 kwiver 构建产品的路径 |
KWIVER_ENABLE_ARROWS |
启用算法实现插件 |
KWIVER_ENABLE_C_BINDINGS |
是否构建 Vital C 绑定 |
KWIVER_ENABLE_DOCS |
打开构建 Doxygen 文档 |
KWIVER_ENABLE_LOG4CPLUS |
启用 log4cplus 日志记录后端 |
KWIVER_ENABLE_PYTHON |
启用 Vital Python 绑定(需要 KWIVER_ENABLE_C_BINDINGS) |
KWIVER_ENABLE_SPROKIT |
启用流处理工具包 |
KWIVER_ENABLE_TESTS |
构建单元测试(需要Google Test) |
KWIVER_ENABLE_TOOLS |
构建命令行工具(例如 plugin_explorer) |
fletch_DIR |
Fletch构建的安装目录。 |
还有很多其他选项。具体来说,有许多以KWIVER_ENABLE_为前缀的选项,用于启用构建依赖于这些项目的Arrows插件。当在支持Fletch的情况下构建(设置fletch_DIR)时,Fletch构建的包的启用选项应默认打开。fletch_DIR是fletch构建目录的根目录,其中包含fletchConfig.cmake文件。
以下章节将向您介绍最小kwiver构建的基本选项。
通过命令行进行基本的CMake生成
注意,这假设您的fletch已构建为支持Python(如果不支持,请将其关闭)
您还需要将fletch路径替换为您自己的
$ cmake </path/to/kwiver/source> -DCMAKE_BUILD_TYPE=Release \ -Dfletch_DIR:PATH=<path/to/fletch/build/dir> \ -DKWIVER_ENABLE_ARROWS:BOOL=ON -DKWIVER_ENABLE_C_BINDINGS:BOOL=ON \ -DKWIVER_ENABLE_EXTRAS:BOOL=ON -DKWIVER_ENABLE_LOG4CPLUS:BOOL=ON \ -DKWIVER_ENABLE_PROCESSES:BOOL=ON -DKWIVER_ENABLE_PYTHON:BOOL=ON \ -DKWIVER_ENABLE_SPROKIT:BOOL=ON -DKWIVER_ENABLE_TOOLS:BOOL=ON \ -DKWIVER_ENABLE_EXAMPLES:BOOL=ON -DKWIVER_USE_BUILD_TREE:BOOL=ON
使用ccmake进行基本的CMake生成
当第一次使用ccmake配置kwiver构建时,建议您在命令行上设置构建配置和fletch_DIR,如下所示
$ ccmake /path/to/kwiver/source -DCMAKE_BUILD_TYPE=Release -Dfletch_DIR=/path/to/fletch/install
如果需要,也可以通过命令行以这种方式传递其他CMake选项。请按照cmake GUI中的推荐选项设置。
使用CMake GUI进行基本的CMake生成
在运行cmake GUI时,我们建议选择“分组”和“高级”选项以更好地组织可用的选项。注意,在点击配置按钮后,新选项将在红色部分突出显示。
设置源代码和构建目录后,按“配置”按钮并选择您的编译器。
配置将失败,但现在我们可以设置选项值
设置fletch_DIR、CMAKE_BUILD_TYPE和这些KWIVER选项,然后按“配置”按钮
注意,如果使用MSVC编译,您将没有CMAKE_BUILD_TYPE选项
选择这些新选项,然后点击“生成”
这假设您的fletch已构建为支持Python,如果不支持,请不要勾选该选项
编译
一旦您的CMake生成完成并创建了构建文件,请按照您的构建环境的标准方式编译。在Linux上通常是运行make。
还有一个构建目标,INSTALL。此目标将构建所有代码,然后在构建目录内创建一个安装目录。此安装文件夹将包含您开发使用kwiver的应用程序所需的所有二进制文件、库、头文件和其他文件。MSVC用户请注意,此安装目录仅适用于单个构建配置;此目录结构中不会有配置命名的目录(即没有/bin/release,只有/bin)。
运行KWIVER
一旦构建了KWIVER,您就会想测试它是否在您的系统上工作。将您的终端/命令提示符更改为KWIVER CMake构建目录。在命令提示符下执行以下命令
# via a bash shell $ cd <path/to/kwiver/build> $ source setup_KWIVER.sh # # via a windows cmd prompt > cd <path/to/kwiver/build> > setup_KWIVER.bat
这将设置您的PATH、PYTHONPATH和其他环境变量,以便在shell/cmd窗口中方便地使用KWIVER。
您可以使用此简单流程来确保您的系统配置正确
# via a bash shell $ cd bin $ kwiver runner ../examples/pipelines/number_flow.pipe # # on windows, you will need to also be in the configuration folder > cd bin\release > kwiver runner ..\..\examples\pipelines\number_flow.pipe
这将生成一个位于</path/to/kwiver/build>/examples/pipelines/output目录中的“numbers.txt”文件。
更多示例可以在我们的教程中找到。
KWIVER 用户
以下是一些使用 kwiver 的应用示例,展示了如何针对特定应用利用 kwiver。
一套用于从影像中进行结构从运动和密集三维重建的工具,重点关注空中视频。主要组件是一个名为 TeleSculptor 的图形用户界面应用程序。 |
|
一个计算机视觉库,旨在将多个图像和视频处理算法集成到共同的分布式处理框架中,主要针对海洋物种分析。 |
测试
持续集成测试由 CDash 提供。我们的 KWIVER 控制台托管了包括 Windows、Mac 和 Linux 在内的多个平台的夜间构建和测试结果。
任何人都可以使用提供的控制台脚本向此控制台贡献构建。请按照注释中的说明操作。
贡献
有关如何贡献给 KWIVER 的详细信息,包括代码风格和分支命名约定,请阅读CONTRIBUTING.rst。
获取帮助
请加入kwiver-users 邮件列表,以讨论 KWIVER 或寻求使用 KWIVER 的帮助。有关关于 KWIVER 和基于 KWIVER 的项目的较少频率公告,请加入kwiver-announce 邮件列表。
致谢
作者感谢 AFRL/Sensors Directorate 通过 SBIR 合同 FA8650-14-C-1820 支持这项工作。上述合同资助的该工作部分经案件编号 88ABW-2017-2725 批准公开发布。
作者感谢 IARPA 通过 DIVA 项目支持这项工作。
作者感谢 NOAA 通过 NOAA 渔业战略自动化图像分析倡议支持这项工作。
项目详情
哈希值 for kwiver-1.4.6-cp38-cp38-manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f26fefce86f429c2c7d266bd03653d1ca18e7c0dae0eaa9c90067653e0ac004b |
|
MD5 | 72a526a3705980a22e141a025c33b85d |
|
BLAKE2b-256 | 8ae652c94774748ccd973ffc3feb45804c59eb4e16416ae7cec12d6c95da8942 |
哈希值 for kwiver-1.4.6-cp37-cp37m-manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5e60e45ff39d2699bca81ee2fa8d833003afeac65c9fa78403ef2b92fa413714 |
|
MD5 | 3cdd34229be1a6c1871eb7965ad7a91b |
|
BLAKE2b-256 | 3a29d9e05a1c01b27df8ce52736b1067acaba31201b69b3cee4727d9bf4175f7 |
哈希值 for kwiver-1.4.6-cp36-cp36m-manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3d8ac198dc95366a68eb141a8dd71316f769001c0d7d22f13d16ffc4b638f7b1 |
|
MD5 | 97bbb7c2a34030ce75ba4d5e43d4fec6 |
|
BLAKE2b-256 | cbff07bdb6715cd9bd358e6b9925c3d01e97080ae3f1debe497acaf69804867d |
哈希值 for kwiver-1.4.6-cp35-cp35m-manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 07494818a8b73b8ba09ea4374bd774dc1d492e39036d948d6bd1dc5ea6676de7 |
|
MD5 | 1cd786ba90f43553de35f6758bf2c7aa |
|
BLAKE2b-256 | a3952e2b36def529beb5fce9a28ff8edd936ccf8cae418c7d1de1b2c3bb913e7 |