这里写目录标题
- opencv版本问题
- 下载3.2.0源代码
- 进入解压后的目录
- 创建构建目录
- 运行 CMake 配置 配置时指定一个独立的安装目录,例如 /opt/opencv-3.2:
- 出错:
- 使用多线程编译
- 错误1: stdlib.h: 没有那个文件或目录
- 错误2:error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]
- 安装
- 管理多个版本的 OpenCV
- 在Leg-KILO的CMakeLists.txt文件中修改
opencv版本问题
我的是安装ros自带的4.2.0版本,该系统需要3.2.0。
下载3.2.0源代码
https://github.com/opencv/opencv/releases/tag/3.2.0
直接用浏览器下载,并解压
进入解压后的目录
cd opencv-3.2.0
创建构建目录
mkdir build && cd build
运行 CMake 配置 配置时指定一个独立的安装目录,例如 /opt/opencv-3.2:
cmake -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/opt/opencv-3.2 \
-DBUILD_SHARED_LIBS=ON ..
出错:
解决办法:参考CMake Error at 3rdparty/ippicv/downloader.cmake:77 (message): ICV: Failed to download ICV package:
使用多线程编译
make -j$(nproc)
错误1: stdlib.h: 没有那个文件或目录
解决办法:参考stdlib.h: 没有那个文件或目录
cmake时加上参数-D ENABLE_PRECOMPILED_HEADERS=OFF
错误2:error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]
错误信息被顶上面了,可以重定向输出到文件中:
make -j4 > ~/Desktop/make_output.log 2>&1
/home/ubuntu2004/opencv-3.2.0/modules/python/src2/cv2.cpp:730:34: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]
730 | char* str = PyString_AsString(obj);
解决办法:
invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]
或make时的问题
在opencv-3.2.0/modules/python/src2/cv2.cpp路径下
找到cv2.cpp,大约在730行,将
char* str = PyString_AsString(obj);
改为
char* str = (char *)PyString_AsString(obj);
安装
sudo make install
管理多个版本的 OpenCV
在 C++ 项目中使用
通过 CMake 的 find_package 指定 OpenCV 版本。例如,使用 OpenCV 3.2:
find_package(OpenCV 3.2 REQUIRED PATHS /opt/opencv-3.2/share/OpenCV)
include_directories(${OpenCV_INCLUDE_DIRS})
target_link_libraries(your_target ${OpenCV_LIBS})
在Leg-KILO的CMakeLists.txt文件中修改
注释掉之前的,补上opencv 3.2.0安装的路径
# find_package(OpenCV REQUIRED QUIET)
find_package(OpenCV 3.2 REQUIRED PATHS /opt/opencv-3.2/share/OpenCV)