cmake -DOPENCV_ENABLE_NONFREE
时间: 2024-06-03 15:05:40 浏览: 142
CMake是一个跨平台的编译工具,可以帮助程序员自动化构建、测试和打包软件。而-DOPENCV_ENABLE_NONFREE是CMake中OpenCV库的一个选项,用于启用非免费的OpenCV模块,如SIFT和SURF等算法。这些算法在某些情况下非常有用,但它们受到专利保护,因此需要用户自行决定是否使用。如果启用了-DOPENCV_ENABLE_NONFREE选项,则需要遵守相关的专利要求和许可证协议。
相关问题
cv2.error: OpenCV(4.7.0) D:\a\opencv-python\opencv-python\opencv_contrib\modules\xfeatures2d\src\surf.cpp:1028: error: (-213:The function/feature is not implemented) This algorithm is patented and is excluded in this configuration; Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library in function 'cv::xfeatures2d::SURF::create'
您遇到的错误是由于使用的是不包含受专利保护的算法的 OpenCV 配置导致的。在默认情况下,OpenCV 不包含受专利保护的算法,例如 SURF。要解决此问题,您需要重新构建 OpenCV 库并启用 OPENCV_ENABLE_NONFREE CMake 选项。这将启用受专利保护的算法。请按照以下步骤操作:
1. 下载 OpenCV 源代码并解压缩。
2. 进入解压后的 OpenCV 目录。
3. 创建一个新的目录(例如 build)作为构建目录。
4. 在构建目录中运行 CMake 命令,启用 OPENCV_ENABLE_NONFREE 选项:
```
cmake -DOPENCV_ENABLE_NONFREE=ON ..
```
5. 运行 make 命令来构建 OpenCV 库:
```
make
```
6. 构建完成后,您可以将生成的库文件链接到您的项目中,并重新运行您的代码。
请注意,启用 OPENCV_ENABLE_NONFREE 选项可能需要满足一些法律和许可要求。在使用之前,请确保您了解并遵守适用的法律和许可协议。
需要设置OPENCV_EXTRA_MODULES_PATH的目录吗
如果你需要使用 OpenCV 官方库之外的额外模块(extra modules),那么你需要设置 `OPENCV_EXTRA_MODULES_PATH` 环境变量,指定额外模块所在的目录。
额外模块包含一些非常有用的功能,如人脸识别、物体跟踪、光流估计等。在 OpenCV 安装包中,这些模块并没有被编译和安装,因此需要单独下载并编译它们。你可以从 OpenCV 的 GitHub 仓库中下载额外模块,然后将其解压到任意目录中。
在编译 OpenCV 时,通过设置 `OPENCV_EXTRA_MODULES_PATH` 环境变量,告诉 CMake 配置文件额外模块所在的目录,以便 CMake 可以找到并编译它们。例如,如果你将额外模块解压到 `/path/to/opencv_contrib` 目录中,可以使用以下命令设置环境变量:
```
export OPENCV_EXTRA_MODULES_PATH=/path/to/opencv_contrib/modules
```
然后,在编译 OpenCV 时,确保启用了额外模块的编译选项,例如:
```
cmake -DOPENCV_EXTRA_MODULES_PATH=/path/to/opencv_contrib/modules -DOPENCV_ENABLE_NONFREE=ON ..
```
这将启用额外模块的编译,并且还将启用一些非免费的功能,如 SIFT 特征检测算法。
阅读全文