如何安装opencv4到ubuntu18.04
2021/9/30 7:12:27
本文主要是介绍如何安装opencv4到ubuntu18.04,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
如何安装opencv4到ubuntu18.04
查找了相当一部分的资料后终于成功编译好了opencv(C++)
引言
网上很多教程其实不能完全编译好opencv4.0.0这个版本,当你开始编译自己的opencv时,各种问题会随之而来,比如编译的时候出现缺少静态链接库,甚至有的时候编译源代码时命名空间有问题都得自己更改。所以写这篇文章时为了让更多的人避免一些坑我会细细地讲解一下编译的过程
第一步选择操作系统和语言
我选择的时ubuntu18.04,不同操作系统所需的库不同,我只实验了ubuntu18.04,并且我只针对用c++编写,所以使用python或java的朋友,需要查阅相关资料。(注意不要使用虚拟机)
第二步联网
安装环境需要连接真正的互联网,否则下载安装包的速度会非常的慢,甚至会失败,所以找到一个好的代理服务器是必须的。
第三步安装环境
创建一个文件夹--opencv
mkdir opencv && cd opencv nano opencv_environment.sh
复制下面内容到opencv_environment.sh
echo "OpenCV installation by learnOpenCV.com" # Define OpenCV Version to install cvVersion="master" # Create directory for installation mkdir installation mkdir installation/OpenCV-"$cvVersion" # Save current working directory cwd=$(pwd) sudo apt -y update sudo apt -y upgrade sudo apt -y remove x264 libx264-dev ## Install dependencies sudo apt -y install build-essential checkinstall cmake pkg-config yasm sudo apt -y install git gfortran sudo apt -y install libjpeg8-dev libpng-dev sudo apt -y install software-properties-common sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main" sudo apt -y update sudo apt -y install libjasper1 sudo apt -y install libtiff-dev sudo apt -y install libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev sudo apt -y install libxine2-dev libv4l-dev cd /usr/include/linux sudo ln -s -f ../libv4l1-videodev.h videodev.h cd "$cwd" sudo apt -y install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev sudo apt -y install libgtk2.0-dev libtbb-dev qt5-default sudo apt -y install libatlas-base-dev sudo apt -y install libfaac-dev libmp3lame-dev libtheora-dev sudo apt -y install libvorbis-dev libxvidcore-dev sudo apt -y install libopencore-amrnb-dev libopencore-amrwb-dev sudo apt -y install libavresample-dev sudo apt -y install x264 v4l-utils sudo apt-get -y install libvtk7-dev # Optional dependencies sudo apt -y install libprotobuf-dev protobuf-compiler sudo apt -y install libgoogle-glog-dev libgflags-dev sudo apt -y install libgphoto2-dev libeigen3-dev libhdf5-dev doxygen sudo apt -y install python3-dev python3-pip sudo -H pip3 install -U pip numpy sudo apt -y install python3-testresources # Fix failed to load module “canberra-gtk-module” sudo apt install libcanberra-gtk-module libcanberra-gtk3-module # install qtcreator sudo apt-get install qtcreator -y
给脚本运行权限并运行
chmod +x opencv_environment.sh ./opencv_environment.sh
第四步下载opencv4.0.0和opencv4.0.0_contrib-4.0.0(在opencv文件夹中)
wget "https://github.com/opencv/opencv/archive/4.0.0.tar.gz" -O opencv.tar.gz wget "https://github.com/opencv/opencv_contrib/archive/4.0.0.tar.gz" -O opencv_contrib.tar.gz # 解压到本地 tar -zxvf opencv.tar.gz tar -zxvf opencv_contrib.tar.gz
第五步编译opencv4.0.0
在opencv文件中创建一个脚本
nano opencv_build.sh
复制以下内容到opencv_build.sh
rm -rf build mkdir build && cd build cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.0.0/modules ../opencv-4.0.0 -DOPENCV_GENERATE_PKGCONFIG=ON -DWITH_TBB=ON -DWITH_V4L=ON -DWITH_QT=ON -DWITH_VTK=ON -DWITH_OPENGL=ON #打开了qt和opengl模块,可以用qt和opengl的库 make -j8 #-j8代表8个线程编译 make install
给opencv_build.sh运行权限
chmod +x opencv_build.sh
先别急着运行,在opencv_contrib-4.0.0中对应的qt模块源码有一处错误,这个错误会导致你在编译到68%的时候报错,原因是没有使用正确的命名空间。
到这个文件下面opencv/opencv_contrib-4.0.0/modules/cvv/src/qtutil/filter
有一个名叫 sobelfilterwidget.cpp 的源文件在第11行下面添加一行 using namespace std; 即可
运行opencv_build.sh
./opencv_build.sh
紧接着就静静等待安装完成,
一些细节
编译完后安装的根目录是/usr/local/
/usr/local/bin - executable files
/usr/local/lib - libraries (.so)
/usr/local/cmake/opencv4 - cmake package
/usr/local/include/opencv4 - headers
/usr/local/share/opencv4 - other files (e.g. trained cascades in XML format)
总结
内容有很多细节没有讲,但都在文章里面,opencv对初学者不是很友好,本人也是花了将近一个月的时间,不停的换操作系统,不停的在虚拟机和真机中切换,最后发现很多东西虚拟机和真机有不同,所以劝朋友们最好不要使用虚拟机,直接使用真机。不同的操作系统需要的环境不同,理论上按照上面的步骤是可以配置成功的,但实际上本人只在ubuntu18.04这个版本上成功过。时代在发展,本教程只做参考。
如果遇到问题请邮件联系或者在下方留言
邮箱:zhengngago@gmail.com
这篇关于如何安装opencv4到ubuntu18.04的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享