注意版本要一致
opencv 下载 opencv官网
opencv_contrib 下载 github
sudo apt-get update
sudo apt-get upgrade
//依赖包
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-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 install qt5-default ccache libv4l-dev libavresample-dev libgphoto2-dev libopenblas-base libopenblas-dev doxygen openjdk-8-jdk pylint libvtk6-dev
sudo apt-get install pkg-config
将下载好的安装包解压
//解压安装包
sudo unzip opencv-3.4.5.zip
sudo tar zxvf opencv_contrib-3.4.5.tar.gz
此时你的包可能还在下载的那个文件夹,这里最好在主目录下在重新建立一个文件夹然后把解压后的包移动进去.
然后将解压后的contrib文件移动至opencv-3.4.5文件下
sudo cp -r opencv_contrib-3.4.5 opencv-3.4.5
并在opencv-3.4.5文件夹中新建build文件夹用于后续编译和生成。
cd opencv-3.4.5 #进入opencv文件夹
sudo mkdir build #新建文件夹build
进入bulid文件夹并进行cmake
cd build
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=~/opencv-3.4.5/opencv_contrib-3.4.5/modules/ -D OPENCV_ENABLE_NONFREE=True ..
注意后面的两点不可省略,代表其他参数默认。
注意 OPENCV_EXTRA_MODULES_PATH 代表你放置opencv_contrib的modules文件夹的真实地址
将上述命令执行之后会发现存在一些问题,主要是一些文件的下载问题,包括ippicv和face_landmark_model.dat以及fatal error: boostdesc_bgm.i: vgg_generated_80. vgg_generated_120.i没有那个文件或目录 。
生成完毕会出现以下画面
-- Install path: /usr/local
--
-- cvconfig.h is in: /home/files/opencv-3.4.5/build
-- -----------------------------------------------------------------
--
-- Configuring done
-- Generating done
-- Build files have been written to: /home/files/opencv-3.4.5/build
这里先看一下下面的出错问题,然后解决以下在make,争取一次成功
//然后进行make
sudo make -j8 #j后面的数字代表用几个线程编译,此为8线程
然后大概率会出错 ,如下:
其实搜索这个错误网上也有不少解决方法,我使用的就是直接在报错的文件中,把头文件修改了,如下:
#ifdef HAVE_OPENCV_XFEATURES2D
//(原来的头文件)
//#include "opencv2/xfeatures2d/cuda.hpp"
//(修改后的头文件)
#include"/home/tjk/opencv/opencv-3.4.5/opencv_contrib-3.4.5/modules/xfeatures2d/include/opencv2/xfeatures2d/cuda.hpp"
#endif
然后可能还会有一个错误,反正我是遇到了,
fatal error: boostdesc_bgm.i: vgg_generated_80. vgg_generated_120.i没有那个文件或目录
这个问题是一堆文件的缺失,包括
boostdesc_bgm.i
boostdesc_bgm_bi.i
boostdesc_bgm_hd.i
boostdesc_lbgm.i
boostdesc_binboost_064.i
boostdesc_binboost_128.i
boostdesc_binboost_256.i
vgg_generated_120.i
vgg_generated_64.i
vgg_generated_80.i
vgg_generated_48.i
所以只需要将这些文件下载然后放置到opencv_contrib/modules/xfeatures2d/src/ 路径下即可。
当然,这些文件的下载路径可以在cmake//日志中查看,直接复制其下载地址到网页可以看该到文件的源码,直接拷贝源码并生成同名文件然后放置到opencv_contrib/modules/xfeatures2d/src/ 路径下即可。
或者从百度网盘中下载,然后解压并将这些文件放置到opencv_contrib/modules/xfeatures2d/src/ 路径下即可。
百度云盘连接
链接: 密码: os8l
解决完这些错误,可以继续
sudo make -j8
,
也有的教程建议删除build文件夹,在重来一次,两种我都试过,都可以。
然后执行:sudo make install
打开文件
sudo gedit /etc/ld.so.conf.d/opencv.conf
在空白文档中添加
/usr/local/lib
接下来配置库
sudo ldconfig
更改环境变量
sudo gedit /etc/bash.bashrc
在文件最后加上
export PKG_CONFIG_PATH=/usr/local/opencv/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/local/opencv/lib
这里说两个方式:
直接在vim 中写,
#include
#include
using namespace cv;
using namespace std;
int main()
{
VideoCapture cap(0);
while(1)
{
Mat frame;
cap >> frame;
imshow("1",frame);
if(waitKey(10) == 'q')
{
break;
}
}
}
g++ main.cpp `pkg-config opencv --cflags --libs opencv`
./a.out