之前发过一篇Ubuntu20.04配置OpenCV3.4.14的文章,由于理解有限,其实配置方法不是很好,比如直接将OpenCV直接编译到了/usr/local/路径下,这样做会导致文件夹混乱,最好的方法是自建新一个文件夹并以编译的OpenCV+版本号命名,这样可以方便控制管理。后来和其他同学也讨论了一下,大概是比较清晰的搞明白了配置的方法,并且可以在绝大多数Ubuntu版本配置绝大部分版本OpenCV3和OpenCV4。同时由于环境变量的时而失灵,这里放弃了使用环境变量而直接使用INCLUDEPATH和LIBS添加外部库。
软件使用的是VMware Workstation 16 Pro,Ubuntu20.04镜像从官网下载。第一步安装虚拟机,暂时略过,建议选择典型安装,网络选择NAT模式,磁盘建议使用单个磁盘安装,这样性能好。下面从开机开始
1.首次使用初始化.
2.安装OpenCV.
3.安装QTcreator.
4.在Ot中测试OpenCV.
1. 首次使用初始化
- 设置中文(English good 忽略):桌面右击 -> settings->Region & Language -> Manage Install Languages ->Install/Remove Languages… ->找到Chinese(simplified),选中 -> Apply ,输密码下载->找到下载的中文,拖动到最上面(就再刚刚的界面找到),close -> 重启电脑。
- 画面太小,可以在设置里调解分辨率:settigs->Displays,自己尝试调。
- 换源(为了更快更稳定下载):设置->最下面有一个about->最下面有一个software updates 点击Download From后面选项框换源(默认是US,换成中国的某个源,选择之后要重新载入)
- 打开终端,如果一直显示:To run a command as administrator (user “root”), use “sudo ”. See “man sudo_root” for details.
解决方案:终端输入:touch ~/.sudo_as_admin_successful
,回车。 - 没有安装VMwar tools(可以点VM软件击左上角-虚拟机,如果重新安装VMware Tools是灰色的,代表没安装,这个工具主要作用是实现虚拟机和原来系统之间的文件拖拽和复制粘贴(不过现在复制粘贴貌似也不需要VMware tools了),如果没安装那就不安装了(因为我也不会)。
- 浏览器无法搜索,可能是搜索引擎不对,谷歌国内不好用,建议换成bing(浏览器设置->搜索引擎)。
- 有关复制用法:终端里鼠标长按滑过自动复制,可以通过单击鼠标中键进行粘贴,浏览器复制需要使用右键粘贴,关于使用过得命令命令可以使用箭头(数字小键盘左边那个)回溯。
- 安装中文输入法:在浏览器中搜索搜狗拼音输入法,下载linux个人版 x86_64,下载后会转跳到一个安装教程界面,跟着做即可。
2. 安装OpenCV
- 安装依赖项
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential
sudo apt-get install build-essential cmake
安装完后使用
g++ -v
查看g++是否安装成功
- 安装OpenCV依赖(下面这么长是一个命令)
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libatlas-base-dev gfortran libgtk2.0-dev libjpeg-dev libpng-dev
- 编译安装OpenCV
注意!!!下面将使用opencvX.X.X代替你的opecv版本,你需要将X.X.X进行替换,这样可以方便的管理不同的opencv版本
- 下载OpenCV,下载Sources版本,使用浏览器提供zip相关工具直接解压至自己喜欢的目录(我直接放在home目录下)。
- 打开下载的OpenCV文件夹,右击进入终端或者使用ALT+Ctrl+T,依次执行以下命令
mkdir build
cd build
这里创建build文件夹专门放置编译后的文件
- 编译OpenCV
cmake -D CMAKE_BUILD_TYPE=RELEASE -D OPENCV_GENERATE_PKGCONFIG=ON -D CMAKE_INSTALL_PREFIX=/usr/local/opencvX.X.X ..
sudo make -j8
sudo make install
依次执行以上命令,第一条命令的最后opencvX.X.X要替换成自己的OpenCV版本号,下同,方便管理,第二条-j8代表使用八个线程同时编译,这个根据自己情况自选,编译时间很长,耐心等待,如果编译时卡死也没事,重启虚拟机可以直接执行sudo make -j8继续上次编译。
- 环境配置
- 执行命令
sudo gedit /etc/ld.so.conf.d/opencv.conf
,会打开一个文件,加上/usr/local/opencvX.X.X/lib
保存,再执行sudo ldconfig
刷新,这么做是为了找到动态链接库。如果要配置多个版本的OpenCV,只需把每个版本的路径加上即可。
3. 安装QTcreator
- 执行以下命令安装qt:
sudo apt install qtcreator
sudo apt install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools
sudo apt-get install qt5-default
此时执行qmake -v
,若是会显示版本和路径,则代表安装完成。
- 我遇到的bug:安装QT后,我尝试在一个空项目中编码输出一个helloWorld,没想到刚写完
#include <iostream>
就报错了,但继续编码且程序最后却运行了。QT最上面提示了the code model could not parse an included file…我查了一下是头文件包含有关的问题,解决方案是:帮助–>关于插件–>C+±->ClangCodeModel的勾去掉即可,然后重启QT。
4. 在QT中测试OpenCV
注意:如果使用OpenCV4以上版本,则无法使用环境变量的方法,需要手动添加库文件,建议自行学习。
- 打开QT->新建项目->其他项目->Empty qmake Project。在此项目所在文件夹中加入一张名为
test.jpg
的图片。 - 在工程文件中写入以下内容并保存
注意,这里是以OpenCV4.5.5版本为例,不同版本INCLUDEPATH路径可能略有不同,可在/usr/local/opencvX.X.X中查看。
#包含文件opencv
INCLUDEPATH += /usr/local/opencvX.X.X/include \
/usr/local/opencvX.X.X/include/opencv\
/usr/local/opencvX.X.X/include/opencv2
#opencv的动态链接库文件
LIBS += /usr/local/opencvX.X.X/lib/libopencv_*
#C++14
CONFIG += c++14
- 添加C++源文件,写入以下内容并保存
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv; //声明使用OpenCV的命名空间
int main(int agrc, char** agrv)
{
Mat img=imread("test.jpg");
imshow("test",img);
waitKey(0);
return 0;
}
- 点击左下角绿色三角形,运行程序,此时出现图片则成功。