当前位置: 首页 > news >正文

邢台县教育局五库建设网站品牌推广专员

邢台县教育局五库建设网站,品牌推广专员,时尚大气的网站设计,国家建设标准网站在 Ubuntu 20.04 中,ROS Noetic 默认安装的 OpenCV 版本为 4.2.0。如果您需要确认系统中已安装的 OpenCV 版本,可以使用以下命令: sudo find / -iname "*opencv*"然而,许多开源算法都是基于 OpenCV 3 编写的&#xff0…

在 Ubuntu 20.04 中,ROS Noetic 默认安装的 OpenCV 版本为 4.2.0。如果您需要确认系统中已安装的 OpenCV 版本,可以使用以下命令:

sudo find / -iname "*opencv*"

然而,许多开源算法都是基于 OpenCV 3 编写的,如果要修改代码就非常麻烦。另一方面,一些程序可能可能又依赖高版本的OpenCV,比如4.5版本。这时就需要在系统中安装多个版本的OpenCV。

为了实现多个版本的共存,我们希望在不删除自带的 OpenCV 4 的情况下,编译安装 OpenCV 3 及其 contrib 库,并使得 cv_bridge 能够支持多版本。

本教程将介绍在不影响ROS中自带的 OpenCV 和 cv_bridge 的情况下,如何实现多版本 OpenCV 和 cv_bridge 的共存,并且将说明如何修改 CMakeLists 文件来找到指定版本的OpenCV和cv_bridge。本教程理论上对Ubuntu版本与ROS版本没有限制,并且对安装的OpenCV大版本(3或4)也没有要求。只需要注意OpenCV 3 的cv_bridge对应为melodic,而OpenCV 4则为noetic,在下载源码时选择对应版本即可。

0. 安装OpenCV依赖项

首先,更新源以确保系统处于最新状态:

sudo apt update

接着,安装所需的依赖项:

sudo apt-get install build-essential cmake git pkg-config libavcodec-dev libavformat-dev libswscale-dev libatlas-base-dev gfortran zlib1g-dev ccache autoconf automake libtool checkinstall

为了解决依赖问题,需要添加新的源。然后,安装 libjasper:

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev

接下来,安装常用的图像工具包以及视频 I/O 包:

sudo apt-get install libjpeg-dev libjpeg8-dev libtiff5-dev libjasper-dev libpng-dev
sudo apt install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

1. 编译 OpenCV 3 及其 contrib 库的源代码:

接下来,需要下载并编译 OpenCV 3 的源代码。可以从官方GitHub下载源代码,并按照以下步骤进行编译安装:

首先,下载 OpenCV 3 的源代码并切换到对应版本:

git clone https://github.com/opencv/opencv.git -b 3.4.14
mv opencv opencv3.4.14
cd opencv3.4.14

接着,下载 OpenCV contrib 模块(请注意版本的对应):

git clone https://github.com/opencv/opencv_contrib.git -b 3.4.14

然后,返回到 opencv 目录,并创建并进入 build 目录:

cd ../
mkdir build
cd build

接下来,配置 OpenCV 的编译选项:

cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules \-DCMAKE_BUILD_TYPE=RELEASE \-DWITH_TBB=ON \-DWITH_V4L=ON \-DCMAKE_INSTALL_PREFIX=/usr/local/opencv3.4.14 \-DBUILD_opencv_vtk=OFF \-DWITH_VTK=OFF \..

执行完毕后你大概率会看到编译出现错误:

-- Configuring incomplete, errors occurred!
See also "/home/user/libraries/opencv3.4.14/build/CMakeFiles/CMakeOutput.log".
See also "/home/user/libraries/opencv3.4.14/build/CMakeFiles/CMakeError.log".

这里的错误来自于各种各样的依赖项没有找到或者没有安装,需要翻看报错信息来确定具体问题。可以百度/谷歌相关关键词(比如Could not find xxx)查找解决办法,这里只列举我遇到的一些依赖项问题:

--- Could NOT find PythonLibs (missing:  PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS)
...
No package 'gstreamer-base-1.0' found
...
looking for ccache --not found
...
-- Could NOT find JNI (missing: JAVA_AWT_LIBRARY JAVA_JVM_LIBRARY JAVA_INCLUDE_PATH JAVA_INCLUDE_PATH2 JAVA_AWT_INCLUDE_PATH)

解决方法是安装 Python 相关的开发库、gstreamer 相关库、ccache、OpenBLAS 或者 Atlas 、JNI(Java Native Interface)……:

sudo apt-get install python-dev
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt-get install ccache
sudo apt-get install liblapack-dev liblapacke-dev libopenblas-dev
sudo apt install default-jdk

最后,可能会遇到关于 vtkParseOGLExt 的错误,可以通过复制 vtk7 文件解决:

sudo cp ./vtk7 ./vtk

完成以上步骤并且确认没有任何依赖性的问题之后,可以继续进行编译并安装 OpenCV:

make -j12
sudo make install

最好不要满线程!!!可能会卡死。可以先用htop看自己电脑最高可以多线程,然后适当减少一些编译用的线程数

2. 安装cv_bridge

cv_bridge 是用于在ROS和OpenCV图像之间进行转换的重要工具。在ROS Noetic中,默认的 cv_bridge 链接到了 OpenCV 4。为了确保ROS的完整性,并且保持 OpenCV 4 的正常使用,我们不建议卸载默认的 cv_bridge。

为了额外安装适配于 OpenCV 3 的 cv_bridge,首先需要从 cv_bridge 的 GitHub 仓库下载 ros_melodic 版本的 cv_bridge:cv_bridge GitHub

下载后,进入 vision_opencv-melodic/cv_bridge 目录,并修改其中的 CMakeLists.txt 文件,有以下两个目的:
(1)将寻找 Boost 的方式改为不区分 Python 版本,防止编译时找不到 boost_python3
(2)添加对自己安装的 OpenCV 3 的路径的设置,防止找不到与 OpenCV 版本兼容的配置文件

具体修改方式如下,注意修改的是下载的cv_bridge中CMakeLists.txt。
在文件开头添加以下内容

cmake_minimum_required(VERSION 2.8)
project(cv_bridge)# 添加下面的内容
set(OpenCV_DIR /usr/local/opencv3.4.14/share/OpenCV)
set(OpenCV_INCLUDE_DIRS "/usr/local/opencv3.4.14/include")
set(OpenCV_LIBRARIES "/usr/local/opencv3.4.14/lib")

在文件中找到以下代码:

if(NOT ANDROID)find_package(PythonLibs)if(PYTHONLIBS_VERSION_STRING VERSION_LESS 3)find_package(Boost REQUIRED python)else()find_package(Boost REQUIRED python3)endif()
else()find_package(Boost REQUIRED)
endif()

修改为:

if(NOT ANDROID)find_package(PythonLibs)find_package(Boost REQUIRED python)
else()find_package(Boost REQUIRED)
endif()

完成以上修改后,保存并退出 CMakeLists.txt 文件。

接下来,需要在 vision_opencv-melodic/cv_bridge 目录中编译 cv_bridge:

cd vision_opencv-melodic/cv_bridge
mkdir build
cd build
cmake ..
make -j12

最后,使用 make install 命令将 cv_bridge 安装到系统中:

sudo make install DESTDIR=/usr/local/cv_bridge_melodic

这样就完成了 cv_bridge 的安装。现在,您可以在您的 ROS 系统中同时使用适配于 OpenCV 3 的 cv_bridge 和系统自带的 cv_bridge(链接到 OpenCV 4)了。

3. 修改ROS包中的CMakeLists.txt来指定OpenCV和cv_bridge版本

最后,需要在 ROS 包的 CMakeLists.txt 文件中设置 OpenCV 和 cv_bridge 的链接路径。可以按照以下方式设置:

# 在 project(xxx) 后面添加以下两行
set(cv_bridge_DIR /usr/local/cv_bridge_melodic/usr/local/share/cv_bridge/cmake)
set(OpenCV_DIR /usr/local/opencv3.4.14/share/OpenCV)

需要注意的是,对所有使用了 OpenCV 或者 cv_bridge 的 CMakeLists 都需要进行相应的修改,以确保正确链接到指定版本的库。

本教程到此结束。如果在安装过程中遇到任何问题,欢迎在评论中提出。

http://www.yayakq.cn/news/945146/

相关文章:

  • 做网站自己有模板要花多少钱wordpress 模版安装
  • 怎么做淘宝优惠卷网站网站建设报价购物
  • 福州什么推广网站好wordpress 定时发送
  • 杭州网站制作多少钱100万一300万企业所得税
  • 绵阳网站建设制作seo营销优化
  • 网站做关键词链接有用吗商城网站功能表
  • 河南互联网公司seo网络培训机构
  • 微信开店小程序怎么弄seo优化排名易下拉技巧
  • 如何做淘外网站推广网站做长尾词好还是单个词好
  • 网站开发流程传智播客快三竞猜网站建设
  • 学校门户网站作用wordpress 国定链接
  • 杭州微信网站建设网站模板炫酷
  • o2o网站建设方案ppt镇江市建设工程管理处网站
  • 华为云建站怎么样营销型企业网站的功能有哪些
  • 网站建设学习网站深圳网站建设索q.479185700
  • 免费asp公司网站模板redis wordpress 设置
  • 济宁 做网站电商网络推广方案
  • 个人网站开发开题报告福建省城乡和住房建设厅网站
  • 网站模板和源码区别国外有在线做设计方案的网站吗
  • 做网站网页需要什么嘉兰图工业设计公司现状
  • 泸州市住房和城乡建设厅官方网站济南网站推广¥做下拉去118cr
  • 泗门网站建设小公司做网站多少钱
  • 怎样做网站宣传自己的宾馆公司网站建设需要注意事项
  • 东莞倣网站WordPress移动端加搜索
  • 深圳营销网站设计网站设计论文分类号
  • 住房和城乡建设部网站注册进度外贸谷歌网站推广
  • 网站 推广系部网站建设需求分析运行需求
  • 花垣做网站山东建设工程上传原件的网站
  • 做目录网站注意事项营销印刷网站
  • 什么做书籍的网站WordPress自定义信息登记