前言
本文教程适合初學者
本文作者在多次安裝Open CV環境過程中,對于安裝步驟進行了多次疊代,力求萌新都能夠看懂。
建議使用Linux學習Open CV
這一系列筆記都是基于Linux系統,為什麼不用windows?因為Linux配置環境真的太友善了,安裝一個eigen庫隻需要一行指令,而Windows卻要配好久的環境。
是以在這裡我也建議大家,如果隻是單純處于學習過程,沒有項目的要求,都用Linux系統就好。
本文教程為Windows編寫
專門為Windows編寫
opencv3 and opencv4
本文講解的opencv編譯步驟适用于3和4.不同的地方會特意予以說明。opencv4處需要特别注意的地方會予以黃色标注。
opencv4需要額外的操作有三處。1處是cmake時選中OPENCV_GENERATE_PKGCONFIG 2處是配置環境變量時多一步驟。3處是最後在指令行運作時g++指令也吧太一樣。
文章目錄
- 前言
- 一 為什麼要編譯OpenCV
- 1.2 介紹
- 二 建構步驟
- 2.0 關于準備工作
- 2.1 CMake
- 勾選
- 再點選一次configure
- 代碼驗證庫安裝成功
- 參考連結
- 微信公衆号
一 為什麼要編譯OpenCV
因為根據源碼建構OpenCV的能力是我們必須要掌握的,除了筆記本上自己安裝的Ubuntu系統沒有OpenCV之外,我們也有可能在自己的硬體平台上編譯。
拿嵌入式平台manifold來說,系統其實自帶OpenCV(使用dpkg -l指令可以看到所有已經安裝了的庫),那麼為什麼還要自己編譯呢?因為manifold雖然安裝了CUDA庫(利用GPU進行圖像處理)。但自帶的open cv卻沒有添加CUDA功能。
(如果以後有人要寫CUDA版本的RM程式,記得大幅修改,因為CUDA的open cv裡的類是單獨的,另一個名字)。是以,我們需要自己編譯open cv,DIY能夠滿足我們要求的OpenCV庫。
1.2 介紹
這次我們安裝2個庫OpenCV3.4.8和OpenCV-contrib3.4.8。
OpenCV分為兩個庫,一個是OpenCV,放了OpenCV穩定的功能,另一個是OpenCV-contrib,将一些不太穩定的功能放進去了,contrib介紹。比如Tracking()函數,我們以後也會遇到,是以這裡幹脆一次性安裝全乎了。 OpenCV github下載下傳連結 OpenCV-contrib下載下傳位址 在contribute的下載下傳頁面,點選tag,有相應的版本号。
這倆連結下載下傳速度賊慢,不過已經比官網快許多了。這一節用到的所有資源大家也可以在公衆号背景回複 day1擷取。
我在這裡下載下傳了OpenCV 3.4.8(3.4.1是企業版應用最穩定的,不過這種穩定我們不一定用得到。是以大家自己選擇喜歡的版本即可,步驟大同小異)
Open cv庫的安裝使用的是cmake。使用cmake-gui這個圖形化的工具更加友善。
二 建構步驟
2.0 關于準備工作
CMake過程中,報python2的錯誤,完全不用管。
如果想下載下傳ffmpeg等庫,你需要使用全局的代理,同時,還需要避免dns污染,把正确的ip位址添加到hosts檔案中。
解決方案以win10為例子
1:進入 IPAddress.com 網站查詢raw.githubusercontent.com真實位址。
185.199.108.133
此處可參考
2:打開C:\Windows\System32\drivers\etc\hosts,(需要使用管理者權限打開)
追加199.232.68.133 raw.githubusercontent.com如下:
左下角 搜尋框 搜尋 cmd
彈出指令框
輸入
ipconfig /displaydns
顯示所有 dns内容
ipconfig /flushdns
重新整理所有 dns内容
2.1 CMake

CMake Warning at cmake/OpenCVDetectPython.cmake:81 (message):
CMake's 'find_host_package(PythonInterp 2.7)' found wrong Python version:
PYTHON_EXECUTABLE=D:/Programs/anaconda/python.exe
PYTHON_VERSION_STRING=3.8.5
Consider providing the 'PYTHON2_EXECUTABLE' variable via CMake command line
or environment variables
Call Stack (most recent call first):
cmake/OpenCVDetectPython.cmake:271 (find_python)
CMakeLists.txt:611 (include)
有一定作用:
ippicv是英特爾的實時處理軟體,加速軟體,以後再配置這個加速軟體。感覺需要一個東西能夠讓所有流量都走代理,否則每次安裝都這樣,太煩人了。
CMake Warning at cmake/OpenCVGenSetupVars.cmake:54 (message):
CONFIGURATION IS NOT SUPPORTED: validate setupvars script in install
directory
Call Stack (most recent call first):
CMakeLists.txt:1012 (include)
腳本驗證錯誤:這是一個warning,不想管了,畢竟已經configure成功了。
檢查檔案cmake / OpenCVGenSetupVars.cmake
if(DEFINED __python_path)
if(IS_ABSOLUTE "${__python_path}")
set(OPENCV_PYTHON_DIR_RELATIVE_CMAKECONFIG "${__python_path}")
message(WARNING "CONFIGURATION IS NOT SUPPORTED: validate setupvars script in install directory")
3:再次打開cmake如下即可:
勾選
勾選cmake-gui中的
BUILD_opencv_world
選項(使最後隻生成一個庫),
勾選
OPENCV_ENABLE_NONFREE
支援sift等nonfree的函數
OPENCV_EXTRA_MODULES_PATH選項中填寫opencv_contrib-3.4.14源碼解壓後裡面的modules的路徑(比如opencv_contrib-3.4.14\modules),
去掉勾選ENABLE_PRECOMPILED_HEADERS,
再點選一次configure
代碼驗證庫安裝成功
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int argc, char* argv[])
{
Mat src(220,220,CV_8UC3);
namedWindow("CV_8UC3");
imshow("CV_8UC3",src);
waitKey(5000);
return 0;
}
參考連結
微信公衆号
歡迎大家關注我的個人公衆号,現階段主要總結Robomaster相關的計算機視覺知識。