之前在Ubuntu16.04上装完vtk8.2之后装opencv真是各种错误都有,竟然装了一个星期才弄好,解决了一个错误又来一个,被自己蠢哭。在尝试了三个版本之后决定最终用opencv4.0的版本。
------------------换成另一个博文里提到的依赖库了!!!--------------------------------------------
$sudo apt install -y build-essential cmake git pkg-config libgtk2.0-dev libopenexr-dev
$ sudo apt install -y gfortran libblas-dev liblapack-dev libeigen3-dev
$ sudo apt install -y python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev libjasper-dev
$ sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
$ sudo apt install -y libavcodec-dev libavformat-dev libswscale-dev libavutil-dev libavresample-dev libxvidcore-dev libx264-dev libv4l-dev
opencv源码下载地址:https://opencv.org/releases/
opencv contrib源码下载地址:https://github.com/opencv/opencv_contrib/releases
自己选择合适的版本进行下载,解压。
源码放在新建的Opencv文件夹下,opencv_contrib放在源码文件夹下,Opencv文件夹下再新建文件下名为build。
cmake-gui
此时会弹出这个界面,填好上面两行之后,将advanced勾上,然后就可以对红色区域有选择性的勾选。
注意: 1、因为我们还安装了opencv-contrib,所以还有一个OPENCV_EXTRA_MODULES_PATH 这个变量名,后面要跟上你自己的路径名,记得修改一下。
2、CMAKE_INSTALL_PREFIX路径我没用默认的(因为默认的话之前安装了vtk也是默认的,会混合编译吧我也不知道为啥,虽然最后安装会成功,但是运行一个简单程序的时候在运行那步报错!血的教训,重装)
1、CMAKE_BUILD_TYPE=Release # 默认Debug运行会较慢
2、CMAKE_INSTALL_PREFIX=/usr/local/opencv4.0 # 改到想要安装的位置,我在/usr/local下创建了名为opencv4.0的文件夹
3、OPENCV_GENERATE_PKGCONFIG 选上
4、OPENCV_ENABLE_NONFREE 选中(SURF 专利问题)这个选项要打开,不然像sift等算法用不了,当然,可以不用。
5、BUILD_opencv_world 选上 # 常规下编译opencv源码会生成很多库,勾上它则可以只生成一个库:
6、WITH-VTK 那个勾去掉去掉去掉,我重装了好几遍就是因为它,太气人了!糟心啊糟心我也不知道这个opencv库每次编译安装的时候咋这么会来事,看到我就怕怕的)后来把with——vtk那个勾选的去掉了
注意:build_example这里要是进行学习的话最好勾选上,会有自带的例子可供学习。我就不选了这儿
接着单击configure,点击Generate生成配置文件;
1、OPENCV_EXTRA_MODULES_PATH=…/…/opencv_contrib-4.0.0/modules #下拉设为自己的路径
再点击Generate生成配置文件
在这里会出现问题:
onfigure点击之后应该会下载一些文件,包括前面提到的ippicv_2019_lnx_intel64_general_20180723,而face_landmark_model.dat可能是在cmake的时候下载,也可能是make的时候,反正都可以先下载下来。因为configure之后,ippicv等文件会下载很久,所以可以修改文件的路径指向本地文件,而不用每次都下载:
下载地址为:https://github.com/opencv/opencv_3rdparty/blob/contrib_face_alignment_20170818/face_landmark_model.dat
然后找到opencv_contrib-4.0.0/modules/face/CMakeLists.txt文件打开,将CMakeLists.txt文件的第19行修改为本地路径,即将原来的网址修改为下载的文件保存的路径即可
好了之后的图片:
sudo make -j8
输入密码,然后就是等等等,一直到变为100%,等了好久。。。
sudo make install
配置OpenCV编译环境:
sudo vim /etc/ld.so.conf.d/opencv.conf
在该文件(可能是空文件)末尾加上:
/usr/local/opencv4.0/lib
再执行以下命令使刚才配置的路径生效:
sudo ldconfig
配置bash,终端输入:
sudo gedit /etc/bash.bashrc
然后添加环境变量PKG_CONFIG_PATH到~/.bashrc
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv4.0/lib/pkgconfig
export PKG_CONFIG_PATH
fi这个fi一定要加到后面,然后保存退出
source /etc/bash.bashrc
cmake_minimum_required(VERSION 3.1)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
project(opencv_example_project)
set(OpenCV_DIR /usr/local/opencv4.0/lib/cmake/opencv4)
find_package(OpenCV REQUIRED)
add_executable(readimage readimage.cxx)
target_link_libraries(readimage ${OpenCV_LIBS})
主程序:
#include
#include
using namespace cv;
using namespace std;
int main()
{
//读取图片
Mat image = imread("../data/mag.png");
if (image.data != NULL)
{
//显示图片
imshow("读取并显示图片", image); //// imshow之后必须有waitKey函数,否则显示窗内将一闪而过,不会驻留屏幕
waitKey(0);
}
else
{
cout << "cannot open the file!" << endl;
getchar();
}
return 0;
}
图会显示出来,好了,这个成功,吐血了
参考链接:
1、https://blog.csdn.net/weixin_41053564/article/details/81254410
2、https://blog.csdn.net/weixin_40628128/article/details/89891227
3、https://www.cnblogs.com/journeyonmyway/p/10320837.html
4、https://blog.csdn.net/CSDN330/article/details/86747867
5、https://blog.csdn.net/yz2zcx/article/details/99892452
6、https://blog.csdn.net/wangyjfrecky/article/details/88063058
7、https://blog.csdn.net/titer1/article/details/45070065