构建特定模块的OpenCV

26

我想问如何通过cmake指定要构建的OpenCV模块,例如,我只想构建核心(core)、高级图形界面(highgui)和图像处理(improc)。

谢谢您的回复,因为我已经尝试过谷歌搜索,但没有找到答案。:(

Mari


1
我和你一样。但是,让我明确我的需求:最小的核心。什么是最小的? - rahard
Core是opencv中的一个包,它存储像cv::MAT这样的东西,这些东西被其他模块使用。此外,对于在cmake方面遇到问题的任何人,请使用https://docs.opencv.org/4.x/db/d05/tutorial_config_reference.html。这将教您大多数有关opencv依赖项、模块以及cmake技巧的诀窍。 - saurabheights
3个回答

35

在CMakeCache.txt文件中有一个BUILD_LIST选项。您可以直接编辑该文件或在命令行上指定它。

CMakeCache.txt,相关行

//仅构建列出的模块(以逗号分隔,例如“videoio、dnn、ts”) BUILD_LIST:STRING=

命令行

cmake -DBUILD_LIST=core,highgui,improc ..


2
请注意,此代码仅适用于OpenCV 3.4或更高版本(https://github.com/opencv/opencv/commit/5b17410f7cd89d3f6b9a7def79e8ad1a670daf21)。 - iliis

9

您可以通过在CMake中指定模块来切换每个模块:

-DBUILD_opencv_xxxx=OFF # where xxxx is the module in question, and ON or OFF is your requested state

使用cmake

1
有没有想法只构建几个模块,但仍然构建Python模块? - jmilloy
4
这些模块的名称是什么? - James
3
这并没有回答问题。你讲述了如何关闭构建一个模块,但没有说明如何关闭除指定模块外的所有模块的构建。 - Arthur Tacca
@James 模块是“modules”文件夹中的文件夹。 “cmake-gui”也非常方便,因为它显示一个列表,您可以在其中选择所有所需的模块。 - iliis
@ArthurTacca 对于OpenCV 3.3.1及更早版本,不幸的是没有办法绕过手动禁用每个模块。 - iliis

1
你可以使用CMake GUI查看您正在构建的内容,只需将CMake GUI指向OpenCV源代码目录即可。然后选择您想要编译的编译器版本。 在此输入图像描述 生成完成后,您会得到一个非常好的UI表示您想要构建的内容。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接