目標
在本教程中
- 我們將學習如何在 Fedora 系統中安裝 OpenCV-Python。以下步驟已在 Fedora 18 (64 位) 和 Fedora 19 (32 位) 上進行測試。
簡介
在 Fedora 中安裝 OpenCV-Python 有兩種方法:1) 從 Fedora 儲存庫中提供的預構建二進位制檔案安裝,2) 從原始碼編譯。在本節中,我們將看到這兩種方法。
另一個重要的事情是所需的附加庫。OpenCV-Python 只需要 Numpy(除了其他依賴項,我們將在後面看到)。但在本教程中,我們還將使用 Matplotlib 進行一些簡單而美觀的繪圖(我覺得比 OpenCV 好得多)。Matplotlib 是可選的,但強烈建議使用。類似地,我們還將看到 IPython,一個互動式 Python 終端,同樣強烈建議使用。
從預構建的二進位制檔案安裝 OpenCV-Python
以 root 身份在終端中使用以下命令安裝所有軟體包。
$ yum install numpy opencv*
開啟 Python IDLE(或 IPython)並在 Python 終端中鍵入以下程式碼。
>>> import cv2 as cv
>>> print( cv.__version__ )
如果打印出結果沒有任何錯誤,恭喜!!!您已成功安裝 OpenCV-Python。
這非常容易。但這有一個問題。Yum 儲存庫可能並不總是包含 OpenCV 的最新版本。例如,在編寫本教程時,yum 儲存庫包含 2.4.5,而最新的 OpenCV 版本是 2.4.6。就 Python API 而言,最新版本將始終包含更好的支援。此外,根據驅動程式、ffmpeg、gstreamer 軟體包等的存在,可能存在相機支援、影片播放等問題。
因此,我個人的偏好是下一種方法,即從原始碼編譯。此外,在某個時候,如果您想為 OpenCV 做出貢獻,您將需要這樣做。
從原始碼安裝 OpenCV
從原始碼編譯起初可能看起來有點複雜,但一旦你成功了,就沒什麼複雜的了。
首先,我們將安裝一些依賴項。有些是強制性的,有些是可選的。可選依賴項,如果您不需要,可以忽略它們。
強制依賴項
我們需要 CMake 來配置安裝,GCC 用於編譯,Python-devel 和 Numpy 用於建立 Python 擴充套件等。
yum install cmake
yum install python-devel numpy
yum install gcc gcc-c++
接下來,我們需要 GTK 支援 GUI 功能,相機支援(libdc1394、v4l),媒體支援(ffmpeg、gstreamer)等。
yum install gtk2-devel
yum install libdc1394-devel
yum install ffmpeg-devel
yum install gstreamer-plugins-base-devel
可選依賴項
以上依賴項足以在您的 Fedora 機器上安裝 OpenCV。但根據您的需求,您可能需要一些額外的依賴項。下面列出了一些這樣的可選依賴項。您可以選擇忽略或安裝它,這取決於您:)
OpenCV 附帶支援影像格式(如 PNG、JPEG、JPEG2000、TIFF、WebP 等)的檔案。但這可能有點舊。如果您想獲取最新的庫,您可以安裝這些格式的開發檔案。
yum install libpng-devel
yum install libjpeg-turbo-devel
yum install jasper-devel
yum install openexr-devel
yum install libtiff-devel
yum install libwebp-devel
幾個 OpenCV 函式使用 Intel 的執行緒構建塊 (TBB) 進行並行化。但如果您想啟用它,您需要首先安裝 TBB。(另外,在使用 CMake 配置安裝時,不要忘記傳遞 -D WITH_TBB=ON。更多細節如下。)
OpenCV 使用另一個庫 Eigen 進行最佳化的數學運算。因此,如果您的系統中安裝了 Eigen,您可以利用它。(另外,在使用 CMake 配置安裝時,不要忘記傳遞 -D WITH_EIGEN=ON。更多細節如下。)
如果您想構建 文件 (是的,您可以在您的系統中建立 OpenCV 完整官方文件的 HTML 離線版本,具有完整的搜尋功能,這樣您就不需要在有任何問題時總是訪問網際網路,而且它非常快!!!),您需要安裝 Doxygen(一個文件生成工具)。
下載 OpenCV
接下來,我們必須下載 OpenCV。您可以從 sourceforge 網站下載 OpenCV 的最新版本。然後解壓資料夾。
或者您可以從 OpenCV 的 github 倉庫下載最新的原始碼。(如果您想為 OpenCV 做出貢獻,請選擇此項。它始終使您的 OpenCV 保持最新)。為此,您需要首先安裝 Git。
yum install git
git clone https://github.com/opencv/opencv.git
它將在主目錄(或您指定的目錄)中建立一個 OpenCV 資料夾。克隆可能需要一些時間,具體取決於您的網際網路連線。
現在開啟一個終端視窗並導航到下載的 OpenCV 資料夾。建立一個新的 build 資料夾並導航到它。
配置和安裝
現在我們已經安裝了所有必需的依賴項,讓我們安裝 OpenCV。安裝必須使用 CMake 進行配置。它指定要安裝的模組、安裝路徑、要使用的其他庫、是否要編譯文件和示例等。以下命令通常用於配置(從 build 資料夾執行)。
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
它指定構建型別為“Release Mode”,安裝路徑為 /usr/local。觀察每個選項之前的 -D 和末尾的 ..。簡而言之,這是格式
cmake [-D <flag>] [-D <flag>] ..
您可以指定任意數量的標誌,但每個標誌都應以 -D 開頭。
因此,在本教程中,我們將安裝帶有 TBB 和 Eigen 支援的 OpenCV。我們還構建文件,但我們排除效能測試和構建示例。我們還停用 GPU 相關模組(因為我們使用 OpenCV-Python,所以我們不需要 GPU 相關模組。這為我們節省了一些時間)。
(所有以下命令都可以在單個 cmake 語句中完成,但此處將其拆分以便更好地理解。)
- 啟用 TBB 和 Eigen 支援
cmake -D WITH_TBB=ON -D WITH_EIGEN=ON ..
- 啟用文件並停用測試和示例
cmake -D BUILD_DOCS=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF ..
- 停用所有 GPU 相關模組。
cmake -D WITH_OPENCL=OFF -D BUILD_opencv_gpu=OFF -D BUILD_opencv_gpuarithm=OFF -D BUILD_opencv_gpubgsegm=OFF -D BUILD_opencv_gpucodec=OFF -D BUILD_opencv_gpufeatures2d=OFF -D BUILD_opencv_gpufilters=OFF -D BUILD_opencv_gpuimgproc=OFF -D BUILD_opencv_gpulegacy=OFF -D BUILD_opencv_gpuoptflow=OFF -D BUILD_opencv_gpustereo=OFF -D BUILD_opencv_gpuwarping=OFF ..
- 設定安裝路徑和構建型別
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
每次您輸入 cmake 語句時,它都會打印出生成的配置設定。在您獲得的最終設定中,請確保已填寫以下欄位(以下是我獲得的一些重要配置部分)。這些欄位也應在您的系統中正確填寫。否則會發生一些問題。因此,請檢查您是否正確執行了上述步驟。...
-- GUI
-- GTK+ 2.x: YES (ver 2.24.19)
-- GThread : YES (ver 2.36.3)
-- Video I/O
-- DC1394 2.x: YES (ver 2.2.0)
-- FFMPEG: YES
-- codec: YES (ver 54.92.100)
-- format: YES (ver 54.63.104)
-- util: YES (ver 52.18.100)
-- swscale: YES (ver 2.2.100)
-- gentoo-style: YES
-- GStreamer
-- base: YES (ver 0.10.36)
-- video: YES (ver 0.10.36)
-- app: YES (ver 0.10.36)
-- riff: YES (ver 0.10.36)
-- pbutils: YES (ver 0.10.36)
-- V4L/V4L2: Using libv4l (ver 1.0.0)
-- Other third-party libraries
-- Use Eigen: YES (ver 3.1.4)
-- Use TBB: YES (ver 4.0 interface 6004)
-- Python
-- Interpreter: /usr/bin/python2 (ver 2.7.5)
-- Libraries: /lib/libpython2.7.so (ver 2.7.5)
-- numpy: /usr/lib/python2.7/site-packages/numpy/core/include (ver 1.7.1)
-- packages path: lib/python2.7/site-packages
...
還有許多其他標誌和設定。留給您進一步探索。
現在,您可以使用 make 命令構建檔案,並使用 make install 命令安裝它。make install 應以 root 身份執行。
安裝完成。所有檔案都安裝在 /usr/local/ 資料夾中。但是要使用它,您的 Python 應該能夠找到 OpenCV 模組。您有兩種選擇。
- 將模組移動到 Python 路徑中的任何資料夾:可以透過在 Python 終端中輸入
import sys; print(sys.path) 來找出 Python 路徑。它將打印出許多位置。將 /usr/local/lib/python2.7/site-packages/cv2.so 移動到此資料夾中的任何一個。例如,su mv /usr/local/lib/python2.7/site-packages/cv2.so /usr/lib/python2.7/site-packages
但是每次安裝 OpenCV 時,您都必須這樣做。
- 將 /usr/local/lib/python2.7/site-packages 新增到 PYTHON_PATH:只需執行一次。只需開啟 /.bashrc 並向其中新增以下行,然後登出並返回即可。
export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages
這樣 OpenCV 安裝就完成了。開啟一個終端並嘗試 'import cv2 as cv'。
要構建文件,只需輸入以下命令
然後開啟 opencv/build/doc/doxygen/html/index.html 並在瀏覽器中將其新增為書籤。
練習
- 在您的 Fedora 機器中從原始碼編譯 OpenCV。