(1)到官網下載opencv3.4.2,鏈接:https://opencv.org/releases.html
(2)下載opencv_contrib,鏈接:https://github.com/opencv/opencv_contrib/releases
(2)將兩個壓縮包解壓,進入opencv3.4.2目錄創建build文件夾備用,創建install目錄備用
mkdir build
mkdir install
(3)安裝依賴庫
sudo apt-get install build-essential cmake cmake-qt-gui git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
sudo apt-get install libavcodec-dev libavformat-dev libv4l-dev liblapacke-dev libxvidcore-dev libx264-dev libatlas-base-dev gfortran ffmpeg
(4)打開cmake:cmake-gui
(5)點擊Browse Source選擇opencv源碼所在目錄

(6)點擊Browse Build選擇之前創建的build目錄。

(6)點擊Congiure按照默認選擇即可,點擊finsh

(8)在Search查找extra,找到OPENCV_EXTRA_MODULES_PATH設置目錄為contrib的modules目錄

(8)查找INSTALL_PREFIX修改安裝目錄,選擇我們創建的install目錄。
不要直接安裝到/usr/local目錄下,有一些第三方庫會依賴opencv,而它們依賴的版本可能是不一樣的,這意味着你可能在一個系統里面安裝多個版本的opencv,為了避免沖突,不要直接安裝在/usr/local目錄下。

(9)再次點擊Configure開始配置,直到顯示Configuring done,然后再次點擊Configure直到所有選項沒有紅色狀態。
(10)點擊Generate.

(11)關閉cmake進入build目錄。
輸入:make -j4,然后等待編譯。

(12)編譯完成輸入:make install,到此安裝opencv3.4.2結束。
(13)將頭文件和庫文件放到/usr目錄下。
cd ~/Download/opencv3.4.2/install
mv include /usr/include/opencv3.4.2
mv lib /usr/lib/openc3.4.2
mv bin /usr/bin/opencv3.4.2
然后設置一下庫文件目錄的路徑。
vim ~/.bashrc
在最末尾添加:
export LD_LIBRARY_PATH=/usr/lib/opencv3.4.2:$LD_LIBRARY_PATH
然后保存退出,重啟終端生效。
(14)寫一個測試demo測試一下。
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main() {
VideoCapture cap;
cap.open(0); //打開攝像頭
if(!cap.isOpened())
{
cout<<"open camera error!"<<endl;
return -1;
}
Mat frame;
while(1)
{
cap>>frame; //取當前攝像頭幀畫面
if(frame.empty())
{
cout<<"frame error!"<<endl;
return -2;
}
imshow("cameraView",frame);
if(waitKey(10)==27)
break;
}
cap.release(); //釋放攝像頭
}
(15)Makefile
CXX := g++ CXX_FLAGS := -Wall -Wextra -std=c++11 -ggdb BIN := . SRC := . INCLUDE := /usr/include/opencv3.4.2 LIB := /usr/lib/opencv3.4.2 LIBRARIES :=-lopencv_imgcodecs -lopencv_highgui -lopencv_core \ -lopencv_video -lopencv_videoio EXECUTABLE := camera all: $(BIN)/$(EXECUTABLE) run: clean all clear ./$(BIN)/$(EXECUTABLE) $(BIN)/$(EXECUTABLE): $(SRC)/*.cpp $(CXX) $(CXX_FLAGS) -I$(INCLUDE) -L$(LIB) $^ -o $@ $(LIBRARIES) clean: -rm $(BIN)/*
