Ubuntu 18.04 安装opencv4.2.0
1、安装依赖
- 安装cmake(编译器)和依赖库
sudo apt-get install cmake
sudo apt-get install build-essential libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
- 支持python
sudo apt install python3-dev python3-numpy
- streamer支持
sudo apt install libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev
- 可选的依赖
sudo apt install libpng-dev libopenexr-dev libtiff-dev libwebp-dev
2、下载源文件
可以在官网https://opencv.org/releases/下载相应版本的OpenCV,主要有Source和GitHub方式下载。
解压:
unzip opencv-4.2.0.zip
3、编译
在解压的文件夹里新建一个文件夹用来编译OpenCV:
cd opencv-4.0.1
mkdir release
cd release
然后在新建的这个文件里运行cmake:
cmake -DCMAKE_BUILD_TYPE=Release -DOPENCV_GENERATE_PKGCONFIG=ON -DCMAKE_INSTALL_PREFIX=/usr/local ..
OpenCV4默认不生成.pc文件,OPENCV_GENERATE_PKGCONFIG=ON才会生成。
之后就是编译和安装了,我的电脑是四核八线程,可以运行make -j8,如果是四核可用make -j4。
make -j8
4、进行make install安装
sudo make install
配置c++了,先在/etc/ld.so.conf.d/文件夹下新建一个opencv4.conf,里面写入/usr/local/lib。
5、配置OpenCV动态库环境
配置OpenCV动态库环境——程序执行时加载动态库*.so的路径
cd /etc/ld.so.conf.d/
sudo touch opencv4.conf
sudo sh -c 'echo "/usr/local/lib" > opencv4.conf'
更新pkg-config:
sudo ldconfig
6、验证配置是否成功
之后可以在终端输入pkg-config --libs opencv4和pkg-config --cflags opencv4检验一下,我的输出如下:
diyun@diyun:/etc/ld.so.conf.d$ pkg-config --libs opencv4
-L/usr/local/lib -lopencv_dnn -lopencv_highgui -lopencv_ml -lopencv_objdetect -lopencv_photo -lopencv_stitching -lopencv_video -lopencv_calib3d -lopencv_features2d -lopencv_flann -lopencv_videoio -lopencv_imgcodecs -lopencv_imgproc -lopencv_core
7、 OpenCV的卸载
删掉opencv4.conf文件,再在你编译的文件夹(我的是release)下运行sudo make uinstall
即可。
8、OpenCV的使用
新建一个test_opencv.cpp
复制下面任意一段代码。
读取图片
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat srcImage = imread("lena.jpg");
imshow("src",srcImage);
waitKey(0);
return 0;
}
读取摄像头
/*****************************************************
2021.5.7: test_opencv.cpp
******************************************************/
#include "opencv2/core/core.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/calib3d/calib3d.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <iostream>
#include <fstream>
using namespace cv;
using namespace std;
#define SRC_WIDTH 1920
#define SRC_HEIGHT 1080
int main()
{
//测试视频
VideoCapture capture;
capture.open(0);
if (!capture.isOpened())
{
printf("camera 打开失败\n");
}
else
{
printf("camera 打开 ok\n");
}
Mat frame;
while (true)
{
capture >> frame;
if (frame.data == NULL)
{
printf("Image is empty\n");
break;
}
namedWindow("111", 0);//参数为零,则可以自由拖动
imshow("111", frame);
waitKey(2);
}
return 0;
}
编译这个文件
g++ -o test_opencv test_opencv.cpp `pkg-config opencv4 --cflags --libs`
运行
./test_opencv