团购网站 如何做推广,百度竞价做网站,广州开发区第二小学北校区,西安凤城二路网站建设系统环境
ubuntu20安装了ros-noetic#xff0c;所以系统默认装了opencv4.2.0#xff0c;但是跑fastlivo推荐的是opencv3.2.0#xff0c;而且海康相机别人写的ros驱动#xff08;海康相机ros驱动#xff09;也是需要opencv3.2.0#xff0c;最终还是选择安装多版本的openc…系统环境
ubuntu20安装了ros-noetic所以系统默认装了opencv4.2.0但是跑fastlivo推荐的是opencv3.2.0而且海康相机别人写的ros驱动海康相机ros驱动也是需要opencv3.2.0最终还是选择安装多版本的opencv。
opencv3.2.0安装过程
1、下载安装包
opencv的github链接 下载对应的3.2.0版本
2、安装依赖
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-devlibjasper-dev安装不了可以参考问题解决“E: 无法定位软件包 libjasper-dev加一个apt源去安装
3、编译
为了管理多版本一般需要单独创建opencv3.2.0目录我就直接在/usr/local/opecv3.2.0创建目录并且最终安装在这里。
cd ~/Downloads/depedence/opencv-3.2.0
mkdir build # 创建build文件夹
cd build # 进入build文件夹
cmake -D CMAKE_BUILD_TYPERelease
-D OPENCV_GENERATE_PKGCONFIGON
-D CMAKE_INSTALL_PREFIX/usr/local/opencv3.2.0
-D ENABLE_PRECOMPILED_HEADERSOFF -D WITH_CUDAOFF .. 注意上面设置好安装目录选择生成pkgconfig文件方便查看和调用。最重要的注意WITH_CUDAOFF没加这个之前cmake的过程回报错没法进行后续编译所以把cuda禁用一般也用不到。
make -j8
sudo make install注意编译的过程中也会有报错可以参考Ubuntu 20.04 安装opencv3.2.0 及报错解决方法具体就是
问题1/usr/include/c/9/cstdlib:75:15: fatal error: stdlib.h: 没有那个文件或目录 解决方法cmake时加上参数-D ENABLE_PRECOMPILED_HEADERSOFF问题2error: CODEC_FLAG_GLOBAL_HEADER was not declared in this scope 解决方法在opencv/opencv-3.2.0/modules/videoio/src/cap_ffmpeg_impl.hpp 文件里添加
#define AV_CODEC_FLAG_GLOBAL_HEADER (1 22)
#define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER
#define AVFMT_RAWPICTURE 0x0020问题3make[2]: *** [modules/python3/CMakeFiles/opencv_python3.dir/build.make:56: modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o] Error 1make[1]: *** [CMakeFiles/Makefile2:21149: modules/python3/CMakeFiles/opencv_python3.dir/all] Error 2
解决方法找到cv2.cpp,大约在730行将
char* str PyString_AsString(obj);
改为
char* str (char *)PyString_AsString(obj);漫长等待后就安装完了。
4、配置系统环境
打开系统环境文件
sudo gedit ~/.bashrc 然后把pkg-config和lib的路径加上
export LD_LIBRARY_PATH/usr/local/opencv3.2.0/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH/usr/local/opencv3.2.0/lib/pkgconfig:$PKG_CONFIG_PATH验证opencv版本
pkg-config --modversion opencv最终的输出是
3.2.0安装完成后续就是安装cv_bridge
cv_bridge安装
参考ROS学习cv_bridge与opencv版本冲突三种解决方法 简单理解一个cv_bridge版本对应一个opencv因为一开始ros安装的opencv版本为4.2.0所以cv_bridge也是关于opencv4.2.0的。那么如果ros还需要用opencv3.2.0并且用cv_bridge那么就需要再编译一个cv_bridge对应opencv3.2.0。下面就是重新编译cv_bridge的过程。
1、下载cv_bridge
下载链接vision_opencv记得找到对应ros版本的进行下载ubuntu20一般找的是noetic。
2、编译
直接把里面的cv_bridge复制到你自己的工作空间中。 然后改cmakelist把opencv的版本和目录改成自己想要的。
# set(_opencv_version 4)
# find_package(OpenCV 4 QUIET)
# if(NOT OpenCV_FOUND)
# message(STATUS Did not find OpenCV 4, trying OpenCV 3)
# set(_opencv_version 3)
# endif()set(OpenCV_DIR /usr/local/opencv3.2/share/Opencv)
find_package(OpenCV 3.2.0 REQUIREDCOMPONENTSopencv_coreopencv_imgprocopencv_imgcodecsCONFIG
)上面注释的是改正前的下面是改正后的改成opencv3.2.0。然后就是编译。
catkin_make3、编译海康相机驱动
接着就是把海康相机的驱动MVS_ROS拷贝到工作空间中。 先把工作空间中的cv_bridge包的目录更新到当前终端查看更新情况
source devel/setup.bash
rospack find cv_bridge如果输出的是工作空间中的cv_bridge就说明更新成功接着就是一起编译。整个工作空间的结构是这样的
4、启动海康相机驱动
source devel/setup.bash
roslaunch hikrobot_camera hikrobot_camera_rviz.launch 就能看到相机的话题发布的图像了 后续就是调相机参数再跑算法了。
opencv的卸载
ubuntu20安装opencv4和opencv_contrib 多版本共存 openCV安装后的源码尽可能保留因为可以直接从build文件夹下卸载已经安装的openCV。在ubuntu终端命令行输入以下命令进入安装opencv的build目录并进行卸载操作。
cd build
sudo make uninstall
cd ..
sudo rm -r build最后删除/usr下关于opencv的文件此步骤不需要疑问一下
sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*像我先前的安装路径为/usr/local/opencv3.2.0, 该行指令可直接变为
sudo rm -r /usr/local/opencv3.2.0