遇到的error记录:使用cmake编译opencv报错

本文解决使用CMake编译OpenCV及其贡献模块时遇到的错误:This algorithm is patented and is excluded in this configuration。通过设置CMake选项OPENCV_ENABLE_NONFREE为ON并重新构建库来解决问题。

使用cmake编译opencv(包含了opencv_contrib),执行cmake命令时报错:

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 'create'".

 

解决方法在:

https://answers.opencv.org/question/201938/how-can-i-set-opencv_enable_nonfree-cmake-option-and-rebuild-the-library-in-function-create/

cmake -DOPENCV_ENABLE_NONFREE:BOOL=ON -D CMAKE_INSTALL_PREFIX=/usr/local -D CMAKE_BUILD_TYPE=Release -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ..

(参数中路径要根据自己的机器更改一下啦)

 

 

编译 OpenCV 时,如果遇到错误提示 `opencv error: error Built target opencv_shape`,通常表明在构建 `opencv_shape` 模块时出现了问题。该模块主要负责形状匹配和相关算法,其编译失败可能由多种原因引起。 ### 常见原因及解决方案 #### 1. **依赖库缺失或版本不兼容** `opencv_shape` 模块可能依赖其他库,如 `opencv_core`、`opencv_imgproc` 等。若这些依赖库未正确构建或版本不一致,可能导致编译失败。 **解决方案:** - 确保所有 OpenCV 模块的版本一致。 - 检查 `CMake` 配置,确认所有依赖项路径正确无误。 - 使用 `cmake --build . --target opencv_core` 等命令单独构建依赖模块,确保其无误后再重新构建 `opencv_shape`。 #### 2. **CMake 配置错误** 错误的 `CMakeLists.txt` 配置可能导致模块编译失败。例如,某些编译选项未正确设置,或未启用 `opencv_shape` 模块。 **解决方案:** - 使用 `ccmake` 或 `cmake-gui` 检查是否启用了 `opencv_shape` 模块。 - 确保 `BUILD_opencv_shape` 选项为 `ON`。 - 检查 `CMake` 输出日志,查看是否有关于 `opencv_shape` 的警告或错误提示。 #### 3. **源码问题或补丁缺失** 某些情况下,`opencv_shape` 模块的源码可能存在兼容性问题,尤其是在非主流架构(如 aarch64)上编译时,可能需要额外的补丁。 **解决方案:** - 参考 GitHub 上的 issue 或 PR,查看是否有针对 `opencv_shape` 的补丁。 - 尝试更新 OpenCV 到最新版本,修复可能存在的兼容性问题。 - 若使用的是第三方 OpenCV 分支(如 `opencv-mobile`),确保其支持目标架构,并参考相关 issue(如 [opencv-mobile#199](https://github.com/nihui/opencv-mobile/issues/199))进行补丁处理 [^1]。 #### 4. **交叉编译环境配置问题** 在昇腾服务器等嵌入式平台上编译时,交叉编译工具链配置不正确可能导致部分模块编译失败。 **解决方案:** - 检查交叉编译工具链的路径和配置是否正确。 - 确保目标平台的架构(如 aarch64)在 `CMake` 中正确指定。 - 使用 `-DFORCE_AARCH64` 等宏定义强制启用特定架构的支持。 #### 5. **编译器或构建系统问题** 有时编译器版本过旧或构建系统(如 `make`、`ninja`)存在兼容性问题,也可能导致编译失败。 **解决方案:** - 升级编译器版本(如从 `gcc-7` 升级到 `gcc-9`)。 - 尝试更换构建工具,例如从 `make` 改为 `ninja`。 - 清理构建目录并重新生成构建文件:`rm -rf build && mkdir build && cd build && cmake ..` ### 示例命令 以下是一组示例命令,用于清理并重新构建 `opencv_shape` 模块: ```bash cd opencv/build rm -rf * cmake .. make -j$(nproc) opencv_shape ``` 若仍无法解决,可尝试单独构建 `opencv_shape` 模块: ```bash cd opencv/modules/shape mkdir build && cd build cmake .. make ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值