VMware下ubuntu虚拟机的"Qt5-Opencv3.4.9"装机
只要装机不停下来 道路就会不断延伸 我们的努力也会 全 部 木 大
零零碎碎用了几天时间终于算把这几个玩意儿下载并安装完成了,长舒一口气。写一下装机的时候遇到的各种各样的事情,若有所裨益再好不过。
重申:
这是我总结了装机时出现的各种错误,采取了避坑措施后写出的。如果遇到了报错,则是我没有遇到的,请各位各显神通。
一、Qt5的安装
指路官网网址: https://download.qt.io/official_releases/qt/
根据自己需要下载对应版本,我这里选用的是
qt-opensource-linux-x64-5.12.3.run
下载好后在终端执行下述代码
sudo apt-get update
cd DownLoads #“DownLoads”是下载了qt的文件夹
chmod +x ./qt-opensource-linux-x64-5.9.1.run
sudo ./qt-opensource-linux-x64-5.9.1.run
可执行化后双击图标,在图形化界面下点点点就完事儿了,在安装时有一个地方需要全选 废话
安装结束后还需要修改配置。在终端输入下述代码:
(也不一定是vim gedit也行,只要是文本编辑器就好了)
sudo vim /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf
对打开的文档分别写入Qt5的bin目录以及Qt5的目录,例如:
/home/XXX/NUEDC/qt5/5.12.3/gcc_64/bin
/home/XXX/NUEDC/qt5
为避免误解 声明XXX是用户的名称
保存退出文本编辑器,回到终端,输入下述命令:
sudo apt-get install libgl1-mesa-dev
Qt5安装完成
二、安装及编译OpenCV3.2.0(包括opencv_contrib)
1.安装opencv的依赖库(?
自认为这里列出的依赖有冗余,我也没搞懂到底哪些有用,从许多博客上查到一些命令合在一起最终总算可以开始之后一步了
在终端输入下述命令:
sudo apt-get install libgl1-mesa-dev
sudo apt-get -y install build-essential cmake pkg-config
sudo apt-get -y install libjpeg62-dev
sudo apt-get -y install libtiff4-dev libjasper-dev
sudo apt-get -y install libtiff4-dev
sudo apt-get -y install libtiff5-dev
sudo apt-get -y install libtiff5-dev libjasper-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install git libgtk2.0-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
sudo apt-get -y install libopencv-dev build-essential cmake git libgtk2.0-dev pkg-config python-dev python-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip
sudo apt-get -y install libopencv-dev build-essential cmake git libgtk2.0-dev pkg-config python-dev python-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip --fix-missing
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt install libavresample
然后安装CMake 在终端执行下述命令:
sudo apt-get install cmake
2.下载Opencv以及Opencv-contrib
不得不说GFW在这个方面太挡事,网络不行的地区直接下载基本不可能,这里大家自己各显神通吧。
两个文件的版本号一定要相同。(我这里选择的是3.4.9)
下载下来后是两个文件夹,把contrib的那个放入另一个里面 (以防万一说一下 意思就是/opencv3.4.9/opencv_contrib-3.4.9这样的相对关系)
3.编译(报错重头戏)
在终端执行下述命令:
sudo apt install cmake-qt-gui
sudo apt-get install ccache
在opencv主文件夹下打开终端(右键+e,cd到这里一个意思),执行下述命令:
mkdir release #我这里命名是release,有的博客是用的build,应该都没问题
cd release
cmake-gui
在弹出来的图形化面板上进行操作:
1)
“Where is the source code”
填写opencv主文件夹路径,填到opencv位置,比如"home/XXX/opencv3.4.9"
2)
“Where to build the binaries”
填写contrib文件夹路径,比如"home/XXX/opencv3.4.9/opencv_contrib-3.4.9"
3)
搜索free 在弹出的栏目里打钩
4)
搜索contrib 可能没有也可能有栏目跳出
如果没有,点击搜索栏旁边的Add Entry
Type改为Path
Name填写"OPENCV_EXTRA_MODULES_PATH"
Value填写contrib文件夹中的"modules"文件夹的路径,例如"home/XXX/opencv3.4.9/opencv_contrib-3.4.9/modules"
5)
搜索qt
把WITH_QT的勾打上
把Qt5_DIR后面的值改为cmake文件夹下Qt5文件夹的所在路径,例如"home/xxx/qt5/5.12.3/gcc_64/lib/cmake/Qt5"
6)
点击左下角的Configure,再Generate.
如果一切顺利这里应该就是在下方的小框内只有黑字,没有红字。但是这里大概率会遇到ippicv开头的文件下载失败的问题。
尝试各种方法后最终一种办法采取了成效,这里指路我最终采用的办法 csdn博客
从编译一步开始到这里的步骤,是我总结了装机时出现的各种错误,采取了避坑措施后写出的。如果到这一步时configure还出现红字的报错(比如刚才zdy才来问),则是我没有遇到的,请各位各显神通。
加油 奥利给!!!
7)
在cd到release文件夹的终端里输入下述命令:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_QT=On -D WITH_OPENGL=ON OPENCV_EXTRA_MODULES_PATH=/home/XXX/opencv3.4.9/opencv_contrib-3.4.9/modules/ ..
其中,CMAKE_INSTALL_PREFIX是库文件安装目录,建议就使用这个,WITH_QT=On必须选,OPENCV_EXTRA_MODULES_PATH=后面是你的contrib存放的绝对路径(相对路径不知道可不可以),后面两个.必须加。
8)
在cd到release文件夹的终端里输入下述命令:
sudo make -j8
最末数字代表机子实际有的线程数目,比如八线程CPU就写j8,此处的x太小的话编译太慢,太多的话会死机,请谨慎。
在这里可能会遇到奇怪的错误,我遇到了如下报错:
c++: internal compiler error: Killed (program cc1plus)
查询后发现是内存不足所致。有的说用虚拟内存解决,太高大上了。不过既然这是虚拟机,我是采用关机在vmware调分配内存解决的(3.8GB的样子)
三、扫尾、测试
参照这篇博客的第9到12步 csdn博客
在执行第12步前先在终端输入下述命令:
export LD_LIBRARY_PATH=/home/XXX/qt5/5.12.3/gcc_64/lib/
四、
Hooray!
推荐阅读