天天看點

OpenCV學習筆記(一)Windows環境安裝步驟(3.4.14)

前言

本文教程适合初學者

本文作者在多次安裝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

OpenCV學習筆記(一)Windows環境安裝步驟(3.4.14)
OpenCV學習筆記(一)Windows環境安裝步驟(3.4.14)
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)      

有一定作用:

OpenCV學習筆記(一)Windows環境安裝步驟(3.4.14)

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

OpenCV學習筆記(一)Windows環境安裝步驟(3.4.14)
OpenCV學習筆記(一)Windows環境安裝步驟(3.4.14)
OpenCV學習筆記(一)Windows環境安裝步驟(3.4.14)
OpenCV學習筆記(一)Windows環境安裝步驟(3.4.14)
OpenCV學習筆記(一)Windows環境安裝步驟(3.4.14)

代碼驗證庫安裝成功

#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相關的計算機視覺知識。