點擊上方↑↑↑「OpenCV學堂」關注我
來自 社區網友 團粉 的熱心投稿
編譯環境:ubuntu16.04 LTS
Opencv版本:opencv4.0.1+opencv4.0.1 contribute
https://github.com/opencv/opencv/releases/tag/4.0.1
https://github.com/opencv/opencv_contrib/releases/tag/4.0.1
使用 ubuntu 原生源下載速度,可替換為國內源,提升下載速度
備份 ubuntu 原生源sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
使用gedit編輯sources.list文件sudo gedit /etc/apt/sources.list
將sources.list文件中的內容替換為以下內容,更換為阿里源deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse
以上內容僅支持 ubuntu16 ,其他ubuntu版本可自行百度
命令行輸入 sudo apt-get update 進行更新
安裝cmake及依賴環境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 build-essential qt5-default ccache libv4l-dev libavresample-dev libgphoto2-dev libopenblas-base libopenblas-dev doxygen pylint libvtk6-dev
編譯安裝Opencv新建一個文件夾,存放下載的opencv壓縮包mkdir opencv4
cd opencv4
.tar.gz 結尾的壓縮包使用 tar 工具進行解壓;.zip 結尾的壓縮包使用unzip工具進行解壓
tar -zxvf xxxx.tar.gz
unzip xxx.zip
解壓完成後查看該目錄下的文件
進入 opencv-4.0.1 文件夾,新建一個 build 文件夾,用於存放編譯過程中產生的文件cd opencv-4.0.1
mkdir build
cd build
在命令行中輸入以下內容:
cmake -D CMAKE_BUILD_TYPE=RELEASE
-D CMAKE_INSTALL_PREFIX=/usr/local
-D OPENCV_GENERATE_PKGCONFIG=ON
-D INSTALL_PYTHON_EXAMPLES=ON
-D INSTALL_C_EXAMPLES=ON
-D OPENCV_EXTRA_MODULES_PATH= /home/cht/opencv4/opencv_contrib-4.0.1/modules
-D OPENCV_EXAMPLES=ON ..
CMAKE_INSTALL_PREFIX:該選項為opencv安裝的目錄,可按實際目錄進行修改,一般放在/usr/local目錄下
OPENCV_GENERATE_PKGCONFIG:打開 pkg-config
OPENCV_EXTRA_MODULES_PATH:該選選項為opencv_contrib模塊下module文件夾,按實際目錄進行修改,若不編譯opencv_contrib模塊,該選項可以省略
.. :表示CMakeList.txt在上級目錄,命令最後的 .. 不能夠省略,否則會出現找不到CMakeList.txt
等待 cmake 完成.
cmake 執行過程需要下載一些壓縮包,可能由於網絡原因下載不下來,導致出錯,這時可以刪除 build 文件夾下的內容,重新執行 cmake 命令
在 build 文件夾中進行編譯,輸入 make等待編譯完成...
編譯完成,輸入sudo make install 進行安裝配置編譯環境在命令行中輸入 gedit ~/.bashrc 打開 ~/.bashrc 文件
在 ~/.bashrc 文件中添加下面一行內容
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"
使環境變量生效輸入以下內容
source ~/.bashrc
sudo ldconfig
pkg-config --libs --cflags opencv4
/opencv-4.0.1/samples/cpp/example_cmake
cmake .
make
./opencv_example
運行結果:
手動編寫一個opencv測試程序打開命令行,新建一個opencv_test 文件夾用於存放測試代碼mkdir opencv_test
cd opencv_test
gedit opencv_test.cpp
在 opencv_test.cpp 中 輸入以下內容
#include "opencv2/core.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/videoio.hpp"
#include <iostream>
using namespace std;
using namespace cv;
int main(){
Mat frame=imread("1.jpeg");
if(frame.empty())
{
cout<<" frame is empty"<<endl;
return -1;
}
imshow("input",frame);
waitKey(0);
return 0;
}
gedit CMakeLists.txt
在CMakeLists.txt 中輸入以下內容
cmake_minimum_required(VERSION 3.1)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
project(opencv_test)
find_package(OpenCV REQUIRED)
message(STATUS "OpenCV library status:")
message(STATUS " config: ${OpenCV_DIR}")
message(STATUS " version: ${OpenCV_VERSION}")
message(STATUS " libraries: ${OpenCV_LIBS}")
message(STATUS " include path: ${OpenCV_INCLUDE_DIRS}")
add_executable(opencv_test opencv_test.cpp)
target_link_libraries(opencv_test ${OpenCV_LIBS})
mkdir build
進入build 文件夾中,編譯測試程序cd build
cmake ..
make
在 build 文件夾中存放一張名為 1.jpeg 的圖片進行測試
ls
./opencv_test
運行結果: